ViewPager内に3つのフラグメントがあります。フラグメント内に静的ToggleButtonを追加しました。(静的、nullpointerexceptionの回避策が見つからなかったため、onCreateView()ではなくカスタムメソッドのFragmentクラス内でfindViewById()を使用したい場合)
MainActivityのViewPagerの外に、リセットボタンがあります。これにより、すべてのToggleButton(3つのフラグメントすべて)が「オフ」にリセットされます。
リセットボタンをクリックするたびに、現在のページとすべての隣接ページのみが更新されます。
例えば
- 現在のページ:0更新されたページ:0,1
- 現在のページ:1更新されたページ:0,1,2
- 現在のページ:2更新されたページ:1,2
問題はFragmentPagerAdapterだと思います。ドキュメントによると:
各ページをフラグメントとして表すPagerAdapterの実装。これは、ユーザーがページに戻ることができる限り、フラグメントマネージャーに永続的に保持されます。
2ページ目にいるときは、0ページに直接戻ることができないので、0ページ(=フラグメント0)からのビューはもうメモリにないのではないかと思います。 では、現時点では表示されておらず、現在のフラグメントのネイバーでもないフラグメント内のToggleButtonsにアクセスするにはどうすればよいですか?回避策はありますか?
編集:
証書では、(すべてのフラグメント上の)ToggleButtonsのすべてのchecked()値が更新されますが、表示されず、隣接するフラグメントではない、膨張したフラグメントのビューは更新されないことがわかりました。したがって、前のフラグメントに戻ると、ToggleButtonsのchecked()値は、フラグメントが最後に表示されたときの状態にリセットされます。変...
例:
- Page2アクティブ-ToggleButton_Page2.checked()= true
- ページ0に切り替えます
- リセットボタンを押します。Toast ToggleButton_Page2.checked()= false
- ページ2に戻ります(またはすでにページ1にあります)
- ToggleButton_Page2.checked()= true//falseである必要があります