我有应用程序,当我使用Intent和startActivity()返回导航时,views为null,调用onCreate()并重新初始化活动。这是为什么,以及如何绕过它?
我回到这样的活动中:
@Override
public void onBackPressed() {
if (this.getClass() == XXX.class) {
Intent i = new Intent(this, YYY.class);
startActivity(i); //<-- activity restarts
return;
}
}
super.onBackPressed();
}我使用ActionbarSherlock,所以我有ActionBar初始化的活动,每个活动都只是扩展它。这个活动描述了我回到活动中的方式。
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_screen);
initUIComponents();
setListeners();
resetProgress();
}initUI()初始化UI。
编辑
我的意思是,我如何回到以前创建的activity (不是通过onBackPressed调用的那个)而不重新创建它?我使用startActivity(),但显然它重新创建了整个过程
发布于 2013-12-16 13:37:32
如果您想要在向后按下时显示前一个屏幕,那么您不必在代码中这样做。Android在内部维护堆栈,当您按回键时将负责显示last-shown-activity。不需要通过onBackPressed()来处理
但是,如果您需要的是这个默认操作以外的其他操作,那么应该在什么时候使用onBackPressed()。否则就让Android来处理吧。
因此,在您的应用程序中,如果Activity 1调用Activity 2,用户按回键,那么默认操作将是再次显示Activity 1。不要覆盖onBackPressed()方法
编辑:对于自定义的活动流,您必须自己构建逻辑。您需要在onRestart()中重写Activity 1,在Activity 3中重写onStop()。这样,onCreate就不会再被调用了。根据您的逻辑,我的意思是,标记来跟踪您所处的活动,检查这些标志,并从那里调用所需的活动。
编辑2:前面的问题,回答您需要的内容:
Android活动管理,这意味着在意图上设置标志前面,然后调用startActivity()
使用意图标志查看Android活动堆栈管理,用于其他堆栈重新排序选项:堆栈管理
https://stackoverflow.com/questions/20611971
复制相似问题