我们是否有一种理智的方法可以检测到Activity
是否由于屏幕方向更改而重新启动,或者仅因为Intent
已到达而启动了?{1}}?
在我的应用程序中,我有一个FragmentActivity
,其中包含两个Fragment
个。用户可以使用Fragment
标签在这些ActionBar
之间导航。
还规定,此Intent
的{{1}}可以带有Activity
,可以将指示符保存到要选择的默认选项卡。因此,当EXTRA
开始时,默认情况下可以选择Activity
确定的两个标签中的任何一个。
当用户从默认选定选项卡导航到其他选项卡时,会出现此问题。轮换更改后,重新启动EXTRA
,再次从Activity
中选择默认选项卡,而不选择用户导航到的选项卡。
答案 0 :(得分:4)
通过onSaveInstanceState发送选定的标签名称
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("tabName", "tab1");
}
并获取onCreate
中的值if (savedInstanceState != null) {
String tabname = savedInstanceState.getString("tabName");
}
答案 1 :(得分:-1)
创建一个全局标志,指示用户当前所在的标签。
使用onPause()
和onStop()
方法更新此内容。
您可以使用onStart()
和onRestart()
方法重新设置它。
有关进一步参考,请查看http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle
如果您不喜欢Android处理屏幕旋转的默认方法,您可以自己动手。在AndroidManifest.xml文件中为您的活动设置android:ConfigChanges属性:
<activity android:name="com.myapp.MyActivity"
android:label="@string/app_name"
android:configChanges="orientation"
>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
这里,android:configChanges中的orientation标志告诉系统Activity希望自己处理旋转。 Android将调用Activity的onConfigurationChanged()方法,允许您自己处理屏幕旋转。它将不再杀死并重新启动您的活动。