0

我試圖運行的異步任務在我的活動的的onResume()事件關閉。我的目標是每當活動進入前臺時執行任務。當我在模擬器/手機中運行它時,app force在遇到onPreExecute方法中的ProgressDialog代碼時關閉。ProgressDialog力的的AsyncTask

這裏是我的活動代碼:

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(假)NPE。即使經過數小時的努力,我也無法解決它。請幫忙。道歉,如果這是一個重複的問題,我似乎無法找到與我的問題的任何問題SO

回答

3

嘗試使用進度= ProgressDialog.show更換整個4行的ProgressDialog在preExecute

(PostActivity.this, 「」, 「記錄中...」,FALSE,FALSE);

+0

它的工作!感謝名單這麼多krilovich – 2012-08-08 19:35:16

+0

能否請您給予好評的答案=) – krilovich 2012-08-08 20:01:07

+0

我沒有15美譽投了烏爾答...對不起夥計 – 2012-08-09 19:44:56

0

這聽起來像你的應用是垃圾收集進度當它移動你的應用程序在後臺。在調用asynctask之前,重新初始化onResume中的progressBar變量。

其實,這是可能的,當你減少你的應用程序你progressDialog剛剛被關閉。檢查並確保它在啓動時確實處於打開狀態。無論哪種方式,您都會收到NPE,因爲progressBar不存在,您需要找到它並將其還原。

0

你宣佈

private ProgressDialog progressBar; 

,但它從未被初始化(不作出任何實例), 因此,它實際上是一個NULL指針。

onCreate()方法

progressBar = new ProgressDialog(this, ProgressDialog.STYLE_SPINNER); 

將解決您的問題添加該代碼。

0

如果您想使用相同的ProgressDialog,請在onPostExecute或您班的其他地方解僱。所以,你可以簡單地把它定義爲progress = new ProgressDialog(RemoteActivity.this);

它會對你有幫助,你可以在任何地方使用它。

相關問題