2017-05-02 7 views
1

私はアンドロイドアプリケーションで活動しており、そこからWebサービスを呼び出すAsyncTaskクラスのメソッドを呼び出しています。私はその方法から得た結果に基づいて自分の活動をリセット/再読み込みしたい。そのクラスから自分のアクティビティをリセットするにはどうしたらいいですか?Androidのアクティビティをリセットする

+0

なぜ活動を再作成しますか?単純にデータをサービスから設定しただけではない –

+0

'AsyncTask'が終了した後、' EventBus'を使ってアクティビティスレッドを更新することができます。 –

+0

サービスはデータをポストし、0/1を返します。私はそのクラスのデータを設定するためのコントロールにアクセスできません。 –

答えて

2

あなたは、コンストラクタであなたのAsyncTaskにActivityコンテキストを呼び出して、次の

パスを試してみて、変数のコンテキストのコンテキストに保存することができます。

その後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

ありがとうworksi ... –

0

例:

注:コメントを削除し、削除したり、startActivity(i)についてコメントを使用します。下のコード例を変更せずにテストする場合は、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);*/ 

    } 
} 
} 
関連する問題