我正在使用ProgressDialogue和AsyncTask,但正在发生NullPointerException。
代码
public class MainActivity extends Activity {
//private MyProgressDialog dialog;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.activity_main);
new ProgressTask(MainActivity.this).execute();
}
/**
* this class performs all the work, shows dialog before the work and dismiss it after
*/
public class ProgressTask extends AsyncTask<String, Void, Boolean> {
private Activity context;
public ProgressTask(Activity mainActivity) {
this.activity = mainActivity;
dialog = new ProgressDialog(context);
}
/** progress dialog to show user that the backup is processing. */
private ProgressDialog dialog;
/** application context. */
private Activity activity;
protected void onPreExecute() {
this.dialog.setMessage("Progress start");
this.dialog.show();
}
@Override
protected void onPostExecute(final Boolean success) {
if (dialog.isShowing()) {
dialog.dismiss();
}
}
protected Boolean doInBackground(final String... args) {
try{
return true;
} catch (Exception e){
Log.e("tag", "error", e);
return false;
}
}
}
}
答案 0 :(得分:3)
您传递给context
的{{1}}为ProgressDialog
。传递在构造函数中初始化的null
变量。希望这会有所帮助。
答案 1 :(得分:1)
试试这个,
public ProgressTask(Activity mainActivity) {
this.activity = mainActivity;
dialog = new ProgressDialog(activity); }
实际上,dialog = new ProgressDialog(context);
上下文尚未由您初始化。由于它为null,它给你的NPE。
所以要么初始化它,要么尝试下面的选项之一,
dialog = new ProgressDialog(mainActivity);