我如何重新启动一个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 = getIntent();
finish();
startActivity(intent);
基本上,我首先调用finish(),并且我使用的是这个活动开始时的完全相同的意图。这似乎奏效了?
更新:正如Ralf在下面指出的,activity . rebuild()是API 11及以后的发展方向。如果您在API11+环境中,这是可取的。如果您在API 10或以下,您仍然可以检查当前版本并调用上面的代码片段。(请不要忘记为拉尔夫的答案投票!)
其他回答
如果你从一些片段调用,那么做下面的代码。
Intent intent = getActivity().getIntent();
getActivity().finish();
startActivity(intent);
我的主题切换是这样的:
Intent intent = getIntent();
finish();
startActivity(intent);
基本上,我首先调用finish(),并且我使用的是这个活动开始时的完全相同的意图。这似乎奏效了?
更新:正如Ralf在下面指出的,activity . rebuild()是API 11及以后的发展方向。如果您在API11+环境中,这是可取的。如果您在API 10或以下,您仍然可以检查当前版本并调用上面的代码片段。(请不要忘记为拉尔夫的答案投票!)
尽管这个问题已经被回答了很多次。
如果从一个片段重新启动一个活动,我会这样做:
new Handler().post(new Runnable() {
@Override
public void run()
{
Intent intent = getActivity().getIntent();
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_ANIMATION);
getActivity().overridePendingTransition(0, 0);
getActivity().finish();
getActivity().overridePendingTransition(0, 0);
startActivity(intent);
}
});
所以你可能会觉得这有点过分了? 但是Handler发布允许你在生命周期方法中调用它。我在onRestart/onResume方法中使用了这个方法,当检查用户回到应用程序(安装了一些东西)之间的状态是否发生了变化。
如果没有Handler,如果你在一个奇怪的地方调用它,它只会杀死活动而不会重新启动它。
请随意提问。
欢呼, 克里斯
public void onRestart() {
super.onRestart();
Intent intent=new Intent();
intent.setClass(act, act.getClass());
finish();
act.startActivity(intent);
}
试着用这个..
我想知道为什么没有人提到Intent.makeRestartActivityTask(),它清楚地说明了这个确切的目的。
创建一个可以用来重新启动应用程序任务的Intent *在它的基态。
startActivity(Intent.makeRestartActivityTask(getActivity().getIntent().getComponent()));
这个方法设置Intent。|意图。FLAG_ACTIVITY_CLEAR_TASK作为默认标志。