AsynTask Android关闭程序对话框
我有问题。下面是MainActivity和class的代码:测试。如何在PostExecute上执行asyntask方法后关闭ProgressDialog?。它分为不同的班级。有什么想法吗AsynTask Android关闭程序对话框,android,android-asynctask,progress-bar,Android,Android Asynctask,Progress Bar,我有问题。下面是MainActivity和class的代码:测试。如何在PostExecute上执行asyntask方法后关闭ProgressDialog?。它分为不同的班级。有什么想法吗 public class MainActivity extends ActionBarActivity { private SwitchCompat tg; @Override protected void onCreate(Bundle savedInstanceState) {
public class MainActivity extends ActionBarActivity {
private SwitchCompat tg;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tg = (SwitchCompat) findViewById(R.id.switch1);
tg.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
if (isChecked) {
Toast.makeText(getApplicationContext(), "START", Toast.LENGTH_SHORT).show();
pd = new ProgressDialog(MainActivity.this);
pd.setTitle("Loading...");
pd.setMessage("Please wait.");
pd.show();
Testing testing= new Testing(getApplicationContext());
xml.execute();
} else {
Toast.makeText(getApplicationContext(), "Synchronisation is offline.", Toast.LENGTH_SHORT).show();
}
if (pd != null) {
pd.dismiss();
}
}
});
}
和我的asynctask类:
public class Testing extends AsyncTask<Void, Void, Void> {
Boolean dataFromAsyncTask;
private Context context;
ProgressDialog pd;
public Testing (Context context) {
this.context = context;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
Toast.makeText(context, "PRE EXECUTE.", Toast.LENGTH_SHORT).show();
}
@Override
protected Void doInBackground(Void... arg0) {
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
Toast.makeText(context, "POST EXECUTE.", Toast.LENGTH_SHORT).show();
}
}
在AsyncTask中创建ProgressDialog并将其从活动中删除
然后您可以在onPostExecute中取消它
但是我会传递活动上下文而不是应用程序上下文
当更改我的代码时,出现了一个问题:无法添加窗口标记空值不适用于我编辑的应用程序。你没有像我建议的那样改变背景。
@Override
protected void onPreExecute() {
super.onPreExecute();
Toast.makeText(context, "PRE EXECUTE.", Toast.LENGTH_SHORT).show();
pd = new ProgressDialog(this.context);
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
Toast.makeText(context, "POST EXECUTE.", Toast.LENGTH_SHORT).show();
if (pd != null && pd.isShowing())
pd.dismiss();
}
Testing testing= new Testing(MainActivity.this);