2017-05-02 6 views
1

나는 안드로이드 응용 프로그램에서 활동하고 있으며, 그로부터 웹 서비스를 호출하는 AsyncTask 클래스의 메소드를 호출하고 있습니다. 나는 그 방법에서 얻은 결과에 기초하여 나의 활동을 리셋/리로드하고 싶다. 해당 수업에서 내 활동을 어떻게 재설정합니까?안드로이드 활동 재설정

+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);*/ 

    } 
} 
}