Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AsynTask Android关闭程序对话框_Android_Android Asynctask_Progress Bar - Fatal编程技术网

AsynTask Android关闭程序对话框

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) {

我有问题。下面是MainActivity和class的代码:测试。如何在PostExecute上执行asyntask方法后关闭ProgressDialog?。它分为不同的班级。有什么想法吗

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);