AsyncTask Android 关闭 ProgressDialog

AsynTask Android Close ProgreesDialog

我有问题。下面是 MainActivity 和 class: Testing 的代码。如何在执行异步任务方法 onPostExecute 后关闭 ProgressDialog?。它在单独的 classes 中。有什么想法吗?

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

        });
    }

和我的异步任务 class:

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 并将其从 Activity 中删除。

@Override
    protected void onPreExecute() {
    super.onPreExecute();
    Toast.makeText(context, "PRE EXECUTE.", Toast.LENGTH_SHORT).show();
    pd = new ProgressDialog(this.context);
}

然后您可以在 onPostExecute()

中关闭它
@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();
}

但我会通过 Activity Context 而不是 Application Context

Testing testing= new Testing(MainActivity.this);