簡體   English   中英

處理顯示和隱藏片段的生命周期的正確方法?

[英]Proper way to handle the lifecycle of showing and hiding fragments?

在我的應用程序的主要部分中,我一次打開了2個片段。 雖然一次只顯示一個。

第二個片段是從第一個片段的onCreateView方法創建的,因為第二個片段用於控制第一個片段。

        Bundle args = new Bundle();
        args.putInt(ReferenceSelectorFragment.ARG_TAB_INDEX, Tab.BOOK.position);
        mReferenceSelectorFragment.setArguments(args);
        fm.beginTransaction()
                .add(container.getId(), mReferenceSelectorFragment, FRAGMENT_TAGS[0])
                .hide(mReferenceSelectorFragment)
                .commit();

我正在使用片段事務正確隱藏和顯示片段:

getActivity().getSupportFragmentManager().beginTransaction()
                .setCustomAnimations(R.anim.up_in, R.anim.up_out, R.anim.down_in, R.anim.down_out)
                .hide(ReaderFragment.this)
                .show(mReferenceSelectorFragment)
                .addToBackStack(null)
                .commit();

正如一個預期一樣,除了一個微小的缺陷之外,這非常有效。 當將應用程序最小化一會兒並且OS關閉進程時,再次打開應用程序嘗試恢復以前的狀態時,兩個片段將彼此恢復。 意思是兩個同時出現在彼此的頂部。 (可以通過按應用程序上的“主頁”按鈕,然后使用DDMS終止正在運行的進程來復制該文件)。

我已經嘗試了所有方法來檢測並修復此問題,但是事實證明,以編程方式區分旋轉和退出過程后要恢復的應用程序非常困難。 處理顯示和隱藏片段的生命周期的正確方法是什么?

這可能會幫助您: https : //stackoverflow.com/a/13306633/969325

基本上,您可以在活動super.onCreate(savedInstanceState);中傳遞空捆綁。 或僅在尚不存在時創建新片段。 我懷疑那是你的問題。

暫無
暫無

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

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