2017-07-17 5 views
0

に行くときアダプタビューは復元しないが、ここに私の階層です:リストと地図:ViewPager:バック

CoordinatorLayout 
- AppBarLayout 
    - CollapsingToolbarLayout 
- NestedScrollView 
    - FrameLayout (contentFrame) 
     - Container Fragment 
      - ViewPager 
       - Recycler(List) Fragment 
       - Map Fragment 
      - TabLayout 

コンテナ断片は、二つの断片のタブ付きインターフェイスを示しています。位置データがそれぞれリストされ、マッピングされる。場所を選択すると、位置データの詳細がcontentFrameフラグメントに置き換えられます。

「戻る」ボタンをクリックして「コンテナフラグメント」に戻るまで、これは問題ありません。アダプタによって提供されるビューは復元されず、タブのみが画面に表示されます。私は関わっているすべての断片のライフサイクルを踏み台にしてみて、目がなくなるまで文書を読んだ。これが起こっている理由は何でしょうか?

+0

これはすべて1つのアクティビティですか?あなたの "annbriar golf course"フラグメントが表示されているとき(リージョンのインスタンス状態が保存されていることが保証されている場合のみ)、リージョンごとのフラグメントの状態は失われています。もちろん、コードを見ずに確実に知ることは難しいでしょう。 –

+0

@ BenP。はい、それはcontentFrame FrameLayout内に表示されるFragmentを使用して、1つのアクティビティ内にあります。 mFragmentManager.beginTransaction() .replace(R.id.contentFrame、fragment) .addToBackStack(null) .commit(); –

+0

画面タイトルとTabLayoutから、トランザクションがバックスタックから正常にポップされていることがわかります。これにより、ViewPagerの設定に問題があると思うようになります。おそらく最初に実行される初期化コードがいくつかありますか? –

答えて

1

フラグメント内にフラグメントを表示する場合は、子フラグメントマネージャを使用する必要があります。つまり、あなたのviewpagerの子フラグメントマネージャを使用する必要があります。

getChildFragmentManager() 

代わり

getFragmentManager() 

のあなたがそれをやっていますか?コードなしで知るのは難しい。

しかし、あなたの問題のように聞こえます

+1

Aha!これは間違いなくそれと関係があります。私はgetActivity()。getSupportFragmentManager()を使用していました。私はgetChildFragmentManager()に変更を加え、クリックするとMapフラグメントのonCreateViewメソッド内でクラッシュしますが、正しい方向に動かすように見えます。 –