如何传递上下文?
How to pass context?
我想将主 activity 的上下文传递给另一个 class 以创建 Toast。
我的主要 activity 调用 class 将删除一个文件。
删除文件的class如果文件不存在会调用toast
这是我的代码:
public class MyActivity extends AppCompatActivity
{
public void onCreate(Bundle savedInstanceState)
{
// create a file
Button buttoncreate = (Button)findViewById(R.id.create_button);
Button buttondelete = (Button)findViewById(R.id.delete_button);
...
buttondelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new DeleteFile();
}
});
}
public class DeleteFile extends AsyncTask {
@Override
public Object doInBackground(Object[] params) {
File root = android.os.Environment.getExternalStorageDirectory();
File dir = new File(root.getAbsolutePath() + "/mydir");
if (!(dir.exists())) {
CharSequence text = "Files do not exist!";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(getApplicationContext(), text, duration);
toast.show();
} else {
File file;
file = new File(dir, "mydata.bmp");
file.delete();
}
return(1);
}
}
首先,你需要静态变量来声明应用程序中的全局变量Class,
像这样
class GlobalClass extends Application {
public static Context context;
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
}
}
其次,您需要在应用程序标签 AndroidManifest.xml 中设置此 class
像这样:
<application
android:name=".GlobalClass"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@android:style/Theme.Black.NoTitleBar" >
然后无论您需要访问此数据,都可以通过以下方式获取应用程序对象:
Toast toast = Toast.makeText(GlobalClass.context, text, duration);
toast.show();
我想将主 activity 的上下文传递给另一个 class 以创建 Toast。
我的主要 activity 调用 class 将删除一个文件。 删除文件的class如果文件不存在会调用toast
这是我的代码:
public class MyActivity extends AppCompatActivity
{
public void onCreate(Bundle savedInstanceState)
{
// create a file
Button buttoncreate = (Button)findViewById(R.id.create_button);
Button buttondelete = (Button)findViewById(R.id.delete_button);
...
buttondelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new DeleteFile();
}
});
}
public class DeleteFile extends AsyncTask {
@Override
public Object doInBackground(Object[] params) {
File root = android.os.Environment.getExternalStorageDirectory();
File dir = new File(root.getAbsolutePath() + "/mydir");
if (!(dir.exists())) {
CharSequence text = "Files do not exist!";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(getApplicationContext(), text, duration);
toast.show();
} else {
File file;
file = new File(dir, "mydata.bmp");
file.delete();
}
return(1);
}
}
首先,你需要静态变量来声明应用程序中的全局变量Class,
像这样
class GlobalClass extends Application {
public static Context context;
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
}
}
其次,您需要在应用程序标签 AndroidManifest.xml 中设置此 class
像这样:
<application
android:name=".GlobalClass"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@android:style/Theme.Black.NoTitleBar" >
然后无论您需要访问此数据,都可以通过以下方式获取应用程序对象:
Toast toast = Toast.makeText(GlobalClass.context, text, duration);
toast.show();