나는 안드로이드 응용 프로그램에서 활동하고 있으며, 그로부터 웹 서비스를 호출하는 AsyncTask 클래스의 메소드를 호출하고 있습니다. 나는 그 방법에서 얻은 결과에 기초하여 나의 활동을 리셋/리로드하고 싶다. 해당 수업에서 내 활동을 어떻게 재설정합니까?안드로이드 활동 재설정
1
A
답변
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);*/
}
}
}
활동을 다시 작성 하시겠습니까? 왜 단순히 데이터를 서비스로 설정 했는가? –
'AsyncTask'가 끝난 후에 활동 스레드를 업데이트하기 위해'EventBus'를 사용할 수 있습니다. –
서비스는 단지 데이터를 게시하고 0/1을 반환합니다. 나는 그 클래스에서 데이터를 설정하는 컨트롤에 액세스 할 수 없다. –