2014-10-20 58 views
0

我需要重新启动我的PreferenceActivity并保存以前打开的所有活动。我可以轻松地在Android SDK> 11中执行此操作,仅使用一行代码super.recreate();在这种情况下,我的活动重新启动,并且所有以前的活动也在后退堆栈中,当我按下“后退”按钮时,我得到前一个活动。但是这个美妙的方法仅适用于Android版本为11或更高版本的设备。但是Android版本低于11呢?在这种情况下,我正在这样做:finish(); startActivity(getIntent());如何重新启动活动并保存Android SDK中所有以前打开的活动<11

一切正常,但是当我按下后退按钮时,当前的活动完成其工作并关闭,这就是所有,我没有得到以前打开活动。有没有人有想法如何解决这个问题?

这是我的代码

if (android.os.Build.VERSION.SDK_INT >= 11) { 
      super.recreate(); 
     } 
else { 
     finish(); 
     startActivity(getIntent()); 
    } 

回答

1

你可以做的是Activity.startActivityForResult()启动PreferenceActivity,当你需要重新创建活动,只需使用该Activity.RESULT_FAILED不断完成,表示该活动希望被重新。这样,你将保持你的状态进入,如果你需要传回数据,只需设置你的结果意图。

+0

所以,sceme是下一个:1.在我的活动“A”我调用startActivityForResult(PreferenceActivity)。 2.然后在PreferenceActivity中,我使用结果代码Activity.RESULT_FAILED完成它。 3. onActivityResult方法中的活动“A”我再次获取Activity.RESULT_FAILED代码和startinf PreferenceActivity? – 2014-10-20 14:54:25

+0

绝对:)我就是这么做的。 – AedonEtLIRA 2014-10-20 14:58:12

+0

这是很棒的解决方案!非常感谢你!我也想问一下,如果我可以从其他许多活动中启动PreferenceActivity,那么如何做到这一点很简单,或者我需要在可以启动PreferenceActivity的每个活动中实现此算法? – 2014-10-20 15:09:02

相关问题