2017-05-02 36 views
1

我在android應用程序中有一個活動,並從中調用AsyncTask類的方法調用webservice。我想根據從該方法得到的結果重置/重新加載我的活動。我該如何重新設定該課程的活動?重置Android活動

+0

爲什麼要重新創建活動?爲什麼不簡單地設置數據來自服務 –

+0

在'AsyncTask'完成之後,您可以使用'EventBus'來更新活動線程。 –

+0

服務只是發佈數據並返回0/1。我沒有訪問控件來設置該類中的數據。 –

回答

2

你可以嘗試以下

通行證調用活動上下文中構造你的AsyncTask並將其保存在一個變量上下文的背景下。

中的AsyncTask您PostExecute方法

然後,寫下面幾行:

 Intent targetIntent = new Intent(context, TargetActivity.class); 
      // Add your data to intent 
     targetIntent.putExtra("intent_extra_key", "intent_extra_value"); 
     context.startActivity(targetIntent); 
     ((Activity) context).finish(); 

回覆任何問題。

+0

謝謝它的作品... –

0

實施例:

注:刪除註釋和刪除或使用註釋爲startActivity(ⅰ);在onPostExecute(Boolean aBoolean)中,如果你想測試下面的代碼示例而不改變它。

public class MainActivity extends AppCompatActivity { 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    new LoadFromWebAsyncTask(this).execute(); 
} 


private class LoadFromWebAsyncTask extends AsyncTask<Void, Void, Boolean> { 

    MainActivity activity; 

    LoadFromWebAsyncTask(MainActivity activity) { 
     this.activity = activity; 
    } 

    @Override 
    protected Boolean doInBackground(Void... params) { 
     return true; 
    } 

    @Override 
    protected void onPostExecute(Boolean aBoolean) { 
     super.onPostExecute(aBoolean); 

     activity.finish(); 
     Intent i = new Intent(MainActivity.this, MainActivity.class); 
     startActivity(i); 

     /* final Handler handler = new Handler(); 
     handler.postDelayed(new Runnable() { 
      @Override 
      public void run() { 

       activity.finish(); 
       Intent i = new Intent(MainActivity.this, MainActivity.class); 
       startActivity(i); 
      } 
     }, 5*1000);*/ 

    } 
} 
}