簡體   English   中英

Android - 檢測活動是否因屏幕方向更改而啟動

[英]Android - Detect if activity start due to screen orientation change

是否有一種理智的方式,我們可以檢測是否由於屏幕方向更改而重新啟動Activity或者僅僅因為Intent已到達而啟動了Activity

在我的應用程序中,我有一個FragmentActivity ,它包含兩個Fragment 用戶可以使用ActionBar選項卡在這些Fragment之間導航。 還規定對此ActivityIntent可以攜帶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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM