アクティビティの onResume() イベントで非同期タスクを実行しようとしています。私の目的は、アクティビティがフォアグラウンドになるたびにタスクを実行することです。エミュレーター/電話で実行すると、onPreExecute メソッドに存在する ProgressDialog コードが検出されると、アプリが強制終了します。
私のアクティビティのコードは次のとおりです。
public class PostActivity extends Activity {
private ProgressDialog progressBar;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.post);
}
public void onResume() {
super.onResume();
new LoadFeedTask().execute();
}
public class LoadFeedTask extends AsyncTask<Void, Void, Boolean> {
protected void onPreExecute() {
progressBar.setCancelable(false);
progressBar.setMessage("Logging in...");
progressBar.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressBar.show();
}
@Override
protected Boolean doInBackground(Void... params) {
// TODO Auto-generated method stub
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
Log.d(TAG, "Checking Internet Connectivity");
if (netInfo != null && netInfo.isConnectedOrConnecting()) {
return true;
}
return false;
}
protected void onPostExecute(Boolean result) {
progressBar.dismiss();
if (result == true) {
//Do Something
}
if (result == false) {
//Do Something Else
}
}
}
}
LogCat の出力を確認すると、progressBar.setCancelable(false) に NPE が表示されます。何時間も努力しても解決できません。助けてください。繰り返しの質問である場合はお詫びします。SOで私の問題に関連するそのような質問を見つけることができなかったようです