簡體   English   中英

每個控制器在方向更改時調用onSavedInstance()嗎?

[英]Every controller calls onSavedInstance() on orientation changes?

我已經使用導體庫來控制我的視圖。 現在,我只嘗試在兩個方向上進行設計。

我使用過onSaveInstanceState()保存視圖狀態。 我發現,每次更換控制器並旋轉屏幕時,就會調用兩個控制器上的onSavedInstance(),這會使我的應用程序崩潰。 如何保存屏幕上顯示的當前控制器的實例。

應用程序流A-> B-> C BaseController第一個屏幕A-Controller-屏幕旋轉(稱為控制器A上的onSavedInstance())

第二個屏幕(從A導航)B- Contoller-旋轉的屏幕(稱為控制器A和B上的onSavedInstance())

第三屏幕(從B導航)C-控制器-屏幕旋轉(稱為控制器A,B和C上的onSavedInstance())

我嘗試過isAttached()僅讓顯示的控制器保存實例,但是以某種方式僅返回false

    protected void onSaveInstanceState(@NonNull Bundle outState) {
        super.onSaveInstanceState(outState);
        if (isAttached()) {}

我找到了解決問題的方法。 我不知道它是否正確,但可能會有所幫助。 addChangeListner監聽控制器更改事件的更改。 我在BaseController中創建了一個抽象函數,當調用addChange偵聽器時會調用該抽象函數。 我有一個布爾值,在每個控制器中總是如此。 但是,當控制器更改時,將調用我創建的此抽象函數,並將布爾值更改為false。 因此,只有連接了屏幕的控制器才能保存實例狀態。

`@Override
    protected void onSaveInstanceState(@NonNull Bundle outState) {
        super.onSaveInstanceState(outState);
        if (isAttached) {
            // State that I want to save 
        }
    }`

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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