簡體   English   中英

使用替換時片段不調用onPause或onStop

[英]Fragment not calling onPause or onStop when using replace

我有一個奇怪的問題,當我用另一個片段替換它時,我的片段沒有調用任何結束生命周期方法,如onPause和onStop。 我像這樣替換片段

public static void replaceFragment(Activity activity, int layoutId, Fragment fragment, String title, String shortTitle) {
    FragmentTransaction transaction = activity.getFragmentManager().beginTransaction().replace(layoutId, fragment);
    transaction.addToBackStack(title);
    transaction.setBreadCrumbTitle(title);
    transaction.setBreadCrumbShortTitle(shortTitle);
    transaction.commit();
    activity.getFragmentManager().executePendingTransactions();     
}

我認為它是以某種方式保持我的片段活着,即使我在popBackStack之后再次替換相同的片段之后它會被顯示出來然后它也會在onStart之前調用onStop嗎?

我解決了問題:)

這是因為我在平板電腦上的應用程序在一個主要片段中添加了兩個片段,然后當我替換包含另外兩個片段的片段時,他們的onPause和onStop不會被調用,因此通過在主片段onStop中調用它們onStop我已經解決了這個問題。

感謝所有人試圖提供幫助,我不知道我使用的方法確實是問題,但是孩子的碎片並沒有被他們的父母破壞!

使用抽象類中的確切代碼,我無法復制此問題。 我創建了一個抽象類, ReplaceFragment

My Main類擴展了FragmentActivity並設置了FragmentActivity的內容視圖。

在Fragment類中,我設置了一個ListView 單擊列表項時,我正在執行以下操作:

      getListView().setItemChecked(index, true);

      // Check what fragment is currently shown, replace if needed.
      DetailsFragment details = (DetailsFragment) getFragmentManager().findFragmentById(R.id.details);
      if (details == null || details.getShownIndex() != index) {
        details = DetailsFragment.newInstance(index);

        ReplaceFragment.replaceFragment(...);
      }

每次單擊時我在LogCat中的輸出是:

10-07 12:19:07.688:V / FragmentManager(861):remove:DetailsFragment {40527d48#1 id = 0x7f040003} nesting = 2

10-07 12:19:07.688:V / FragmentManager(861):movefrom RESUMED:DetailsFragment {40527d48#1 id = 0x7f040003}

10-07 12:19:07.688:E / DetailsFragment(861): 詳情onPause()

10-07 12:19:07.688:V / FragmentManager(861):movefrom STARTED:DetailsFragment {40527d48#1 id = 0x7f040003}

10-07 12:19:07.688:E / DetailsFragment(861): 詳情onStop()

10-07 12:19:07.699:V / FragmentManager(861):movefrom STOPPED:DetailsFragment {40527d48#1 id = 0x7f040003}

發布有關實施的更多詳細信息,以便進一步幫助您。

暫無
暫無

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

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