![](/img/trans.png)
[英]Show AlertDialog on Activity start, but not on screen orientation change?
[英]Android - Detect if activity start due to screen orientation change
是否有一種理智的方式,我們可以檢測是否由於屏幕方向更改而重新啟動Activity
或者僅僅因為Intent
已到達而啟動了Activity
?
在我的應用程序中,我有一個FragmentActivity
,它包含兩個Fragment
。 用戶可以使用ActionBar
選項卡在這些Fragment
之間導航。 還規定對此Activity
的Intent
可以攜帶EXTRA
,該EXTRA
可以將指示器保存到要選擇的默認選項卡。 因此,當Activity
啟動時,默認情況下可以選擇EXTRA
確定的兩個選項卡中的任何一個。
當用戶從默認選定選項卡導航到其他選項卡時,會發生此問題。 在輪換更改時,將重新啟動“ Activity
,從而再次從EXTRA
選擇默認選項卡,而不選擇用戶導航到的選項卡。
通過onSaveInstanceState發送選定的選項卡名稱
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("tabName", "tab1");
}
並獲取onCreate中的值
if (savedInstanceState != null) {
String tabname = savedInstanceState.getString("tabName");
}
創建一個全局標志,指示用戶當前所在的選項卡。
在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()方法,允許您自己處理屏幕旋轉。 它將不再殺死並重新啟動您的活動。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.