1

TabLayout と ViewPager を使用して、マスター/詳細レイアウトの詳細ビューとして 5 つのタブを実装しています。

マスター ビューでアイテムをクリックすると、詳細ビ​​ューが作成され、必要なタブが作成されます。詳細ビューが作成されると、タブの onResume() メソッドが呼び出されます。マスター ビューに戻ると、詳細ビ​​ューのonPause() が呼び出されますが、タブの onPause() は呼び出されません

これは、各タブの onResume() メソッドでイベントにサブスクライブするための問題ですが、各タブの onPause() で行われるはずのサブスクライブ解除は決して発生しません。

したがって、マスター ビューのアイテムを n 回クリックすると、サブスクリプションが n 回実行され、各イベントが n 回処理されます。

SOの回答で見つけたこのソリューションhttps://looksok.wordpress.com/2013/11/02/viewpager-with-detailed-fragment-lifecycle-onresumefragment-include-source-code/を試し ましたが、うまくいきませんでしたonFragmentPause() のフラグメントの ID (ID 0) が onFragmentResume() のフラグメントの ID と同じではなかったため (したがって、サブスクリプションは onFragmentPause() で null でした)。

アイテムがクリックされるたびにタブフラグメントが複製されないようにする方法、または onPause() メソッドを呼び出させる方法がわかりません。

4

1 に答える 1