2016-03-02 40 views
0

我是新開發的android開發人員。 我想執行一些數據庫操作,然後想要開始一個新的活動。我在下面寫了AsyncTask代碼。從doInBackground()開始活動時出錯

我在startActivity調用中出錯。請幫助我。

private class AsyncTaskRunner extends AsyncTask<String, String, String> { 

    Context mainContext; 

    public AsyncTaskRunner(Context mainContext){ 
     this.mainContext=mainContext; 
    } 

    @Override 
    protected String doInBackground(String... params) { 
     publishProgress("Sleeping..."); // Calls onProgressUpdate() 
     try { 
      sql.updateRelations(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return ""; 
    } 
    @Override 
    protected void onPostExecute(String result) { 
     InitActivity.progress.dismiss(); 
     Intent intent = new Intent(mainContext, MainActivity.class); 
     if(mainContext!=null){ 
      mainContext.startActivity(intent); 
      ((Activity)mainContext).finish(); 
     } 
    } 
    @Override 
    protected void onPreExecute() { 
     InitActivity.progress.show(); 
    } 
    @Override 
    protected void onProgressUpdate(String... text) { 
    } 
} 
+0

始終要具體說明錯誤。什麼是堆棧跟蹤? –

回答

0

如果你的異步任務是一個內部類的活動,然後做下面

Intent intent = new Intent(YourActivityName.this, MainActivity.class); 
    if(mainContext!=null){ 
     mainContext.startActivity(intent); 
     ((Activity)mainContext).finish(); 
    } 

否則,如果你的異步任務是一個單獨的類,然後嘗試以下

 Intent intent = new Intent((YourActivityName)mainContext, MainActivity.class); 
    if(mainContext!=null){ 
     mainContext.startActivity(intent); 
     ((Activity)mainContext).finish(); 
    } 

如果它不工作,請張貼您的日誌,所以我可以有更好的幫助。

+0

感謝您的回答。我正在使用內部類。我嘗試了這兩個。他們正在開發android studio以及物理設備。但是,在某些設備上,此時應用程序正在崩潰。這個問題在手機上發生,這就是爲什麼我無法登錄。 – vChamps

+0

連接您的手機並通過logcat查看日誌。看看如何做到這一點的鏈接。 http://developer.android.com/tools/building/building-studio.html#RunningOnDeviceStudio –