Android橫屏下Fragment介面重疊問題

來源:互聯網
上載者:User

標籤:

前言:

項目是基於平板開發的,設計的介面是要求橫屏展示介面。所以我將所有的Activity都強制設定為橫屏

android:screenOrientation="landscape"

 

-----------------------------------------------------------------------------------------------------

問題:

主介面,最常見的Activity+n個Fragment 

我這裡使用的hide、show Fragment的方式來切換Fragment,當關閉手機、平板螢幕再開啟,會發現Fragment介面重疊

安卓開發_慕課網_Fragment實現Tab(App主介面)

 

-----------------------------------------------------------------------------------------------------

1、先通過介面來瞭解具體情況

介面左側是4個Tab按鈕,對應四個Fragment介面,如下面兩個圖 ,是正常的介面顯示效果,這裡我已經將這個Activity強製為橫屏顯示

   

 

2、正常情況下,我這個時候關閉了螢幕,然後在開啟螢幕,可以看到 這個時候會顯示 之前開啟過的Fragment介面,導致介面重疊

 

此時,我們測試將activity橫屏顯示去掉,讓他豎屏顯示,然後在進行關螢幕,開啟螢幕操作,會發現 在豎屏的情況下,並沒有發生介面重疊的問題。

 

那麼我們就可以猜出問題所在了:生命週期

3、接著我們給Activity的onCreate() onResume()方法 Fragment的onCreateView() onResume()方法列印Log

  (1)看我們關閉螢幕的時候執行的生命方法

      

  這裡我們可以看到,當我們關閉螢幕的時候,很顯然Activity又執行了一遍生命週期

 

  (2)在看我們開啟螢幕的時候執行的生命方法

  

  可以看到,Activity又執行了一次onCreate()方法,而Fragment執行了多次onCreateView()

 

  總結一下:鎖屏關閉螢幕後,Activity會由橫屏切換為豎屏,這個時候執行了onCreate()方法,但是Activity原來對應的Fragment並沒有被銷毀,(導致第一張生命週期圖中 今日任務Fragment執行了兩次onresume,因為建立了一個和原來未被銷毀的一個,此時存在兩個今日任務Fragment), 解屏開啟螢幕後,Activity又有豎屏切換為橫屏(我們強制設定的橫屏顯示),又執行了onCreate()方法,導致又建立了一次Fragment,但是原來的Fragment還是沒有被銷毀(所以第二章生命週期圖中,我們可以看到此時存在了3個今日任務Fragement的onResume()方法)。那麼最終就會導致開啟螢幕後 之前所有未被銷毀的Fragment都顯示出來。

 

  解決方案:

  我們不讓開關螢幕的時候Activity走生命週期,那麼在資訊清單檔中給Activity設定下面這兩個屬性即可

 android:screenOrientation="landscape" android:configChanges="orientation|keyboardHidden|screenSize"

  注意:4.0以上的configChanges需要添加screenSize屬性,否則切換橫豎屏仍會執行生命週期

Android橫屏下Fragment介面重疊問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.