重置 Android Activity
Reset Android Activity
我在 android 应用程序中有一个 activity,我正在从中调用 AsyncTask class 的方法,该方法正在调用 Web 服务。我想根据从该方法获得的结果 reset/reload 我的 activity 。我怎样才能从 class 重置我的 activity?
您可以尝试以下方法
将调用 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();
返回任何问题。
示例:
注意:去掉注释,对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);*/
}
}
}
我在 android 应用程序中有一个 activity,我正在从中调用 AsyncTask class 的方法,该方法正在调用 Web 服务。我想根据从该方法获得的结果 reset/reload 我的 activity 。我怎样才能从 class 重置我的 activity?
您可以尝试以下方法
将调用 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();
返回任何问题。
示例:
注意:去掉注释,对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);*/
}
}
}