我在android应用程序中有一个活动,从中我调用了一个调用web服务的AsyncTask类的方法。我想根据我从该方法得到的结果重置/重新加载我的活动。如何从该课程重置我的活动?
答案 0 :(得分:2)
您可以尝试以下
将Activity上下文传递给构造函数中的AsyncTask,并将其保存在变量Context上下文中。
然后在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();
恢复任何问题。
答案 1 :(得分: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);*/
}
}
}