我如何重新启动一个Android活动?我尝试了下面的方法,但是这个活动就是退出了。
public static void restartActivity(Activity act){
Intent intent=new Intent();
intent.setClass(act, act.getClass());
act.startActivity(intent);
act.finish();
}
我如何重新启动一个Android活动?我尝试了下面的方法,但是这个活动就是退出了。
public static void restartActivity(Activity act){
Intent intent=new Intent();
intent.setClass(act, act.getClass());
act.startActivity(intent);
act.finish();
}
当前回答
如果你从一些片段调用,那么做下面的代码。
Intent intent = getActivity().getIntent();
getActivity().finish();
startActivity(intent);
其他回答
我的主题切换是这样的:
Intent intent = getIntent();
finish();
startActivity(intent);
基本上,我首先调用finish(),并且我使用的是这个活动开始时的完全相同的意图。这似乎奏效了?
更新:正如Ralf在下面指出的,activity . rebuild()是API 11及以后的发展方向。如果您在API11+环境中,这是可取的。如果您在API 10或以下,您仍然可以检查当前版本并调用上面的代码片段。(请不要忘记为拉尔夫的答案投票!)
如果有人在找科特林的答案你只需要这句话。
片段
startActivity(Intent.makeRestartActivityTask(activity?.intent?.component))
活动
startActivity(Intent.makeRestartActivityTask(this.intent?.component))
好吧,这里没有列出,但有一些已经发布的组合:
if (Build.VERSION.SDK_INT >= 11) {
recreate();
} else {
Intent intent = getIntent();
finish();
startActivity(intent);
}
由于API级别11 (Honeycomb),您可以调用活动的rebuild()方法(多亏了这个答案)。
rebuild()方法的作用就像配置更改一样,因此如果适用,也会调用onSaveInstanceState()和onRestoreInstanceState()方法。
在SDK 11之前,这样做的方法是这样的:
public void reload() {
Intent intent = getIntent();
overridePendingTransition(0, 0);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
finish();
overridePendingTransition(0, 0);
startActivity(intent);
}