問題タブ [fragmentstatepageradapter]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - FragmentStatePagerAdapter のすべての Fragment でメソッドを呼び出す
ListFragments をページングする ViewPager があります。各ページは特定の日付であり、各ページのリストには複数のカテゴリのアイテムが含まれています。
ユーザーは、ダイアログを介して表示されるカテゴリをいつでも切り替えることができます。カテゴリ リストの変更後にインスタンス化されたページ (およびそのフラグメント) では、新しい設定でインスタンス化されるため (変更時に FragmentStatePagerAdapter に渡される)、これは問題ではありません。
But my problem is with all pages that have already been instantiated up to when the user changes the categories list. These pages (or rather, their fragments) need to immediately refresh. To accomplish this I need to be able to call a method (changeData()) to pass the new categories settings to each ListFragment which then calls notifyDataSetChanged() so they will refresh their view.
How can I perform this call on already-instantiated fragments in the FragmentStatePagerAdapter?
Here is my code for the FragmentStatePagerAdapter and the ListFragments used to populate the pages:
上記の seListingCategories() メソッドを使用してアダプターにカテゴリ文字列を設定しているため、新しくインスタンス化されたすべてのフラグメントに正しいカテゴリが表示されます。同じメソッドで、Adapter で notifyDataSetChanged() を呼び出す行がコメント アウトされていることに気付くでしょう。
その呼び出しにより、アダプタはメモリ内のすべての Fragment (現在のページとまだ破棄されていない他のすべてのページ) に対して getItemPosition() を呼び出します。そして、ビューは正常に更新されました。
ただし、(保存された状態で) 既に破棄されたフラグメントは、更新されたカテゴリ リストを持たない保存された状態に復元されるようです。言うまでもなく、これはやり過ぎのようです。既存のオブジェクトを更新するだけでよいのに、なぜすべてのフラグメントを破棄して再作成するのでしょうか?
とにかく、以下は FragmentStatePageAdapter で使用される ListFragment クラスです。
助けてくれてありがとう!
android - Fragment の ViewPager の Fragment が向きの変更時にリロードされない
ActionBarSherlock と ViewPagerIndicator を使用する Android アプリケーションの開発に取り組んでいます。主なアクティビティは SherlockFragmentActivity で、ユーザーはアクション バーのタブを介してフラグメント間を移動します。すべてのタブは SherlockListFragments であり、ほとんどのタブには ListView のみが含まれています。ただし、1 つのフラグメント (HeadlinesFragment) には、タブレットの場合は ViewPager、CirclePageIndicator、および ListView が含まれ、電話の場合は ListView のみが含まれます。ViewPager には、アイテムの SherlockFragment を返す FragmentStatePagerAdapter があります。
問題は、方向の変更 (または実際の構成の変更) で、ViewPager 内の子フラグメントがリロードされず、ViewPager が空の場合のように、CirclePagerIndicator にインジケーターが表示されないことです。ただし、ListView は適切にリロードされます。フラグメントの最初のロードでは、ViewPager は正しく機能しますが、向きが変更された後では機能しません。
MainActivity.java
HeadlinesFragment.java
activity_headlines.xml
RotatorAdapter.java
RotatorFragment.java
android - ViewPager でページを動的にスキップする
を介して sViewPager
を保持する を取得しました。ページャーが最初に次のページ ( )を保持しているとします。Fragment
FragmentStatePagerAdapter
Fragment
ユーザーがスワイプすると、 から 、 などに移動できますA
。B
ただしB
、C
ユーザーがページのいくつかのオプションを変更すると、 ではA
なく に移動できる場合があります。B
C
次に、ユーザーは に戻りA
、何かを変更して、 を再度有効にしますB
。
この非常に動的な動作を実現するにはどうすればよいですか? Fragment
ユーザーが何かを変更したときに sを追加することはできませんViewPager
。
android - Androidフラグメントに複数の膨張したレイアウトのビューステートを保存する方法は?
ツアー予約アプリを開発しています。私のツアー予約ページには、2 種類のフォームがあります。1 つはリード旅行者用で、もう 1 つは他の旅行者 (大人または子供) 用です。
主な旅行者のフィールドは次のとおりです。
役職
名
姓
性別
生年月日
電子メール
連絡先番号
国籍
旅行者のその他のフィールドは次のとおりです。
役職
名
姓
性別
生年月日
このシナリオを処理するために、メイン レイアウトにリード旅行者フォームを作成し、他の旅行者フォームを複数回表示する必要があるため、他の旅行者フォームを別のレイアウトに配置しました。最初の試行では、ユーザーはリード旅行者フォームのみを取得します。ユーザーがクリックすると、他の旅行者フォームが表示されます。他の旅行者フォームを表示するために、otherform.xml ファイルを拡張しました。この目的のために、アクティビティではなくフラグメントを使用しています。
私の問題は、送信して次の予約ステップに移動した後です(次のフラグメントに移動します)。旅行者情報を変更するために戻ってきたら。膨張したレイアウト (他の旅行者フォーム) はすべてなくなりました。そして、私の最後の他の旅行者フォーム フィールドのデータは、リード旅行者フォーム フィールドに転送されます (最初の 5 つのフィールドのデータのみが変更され、残りの 3 つのフィールドのデータは以前に入力したものと同じです)。
これらの膨張したレイアウトをカムバック時に保存し続ける方法はありますか?
どんな助けでも本当に感謝しています。前もって感謝します
android - FragmentStatePagerAdapter 内のフラグメントを復元します (つまり、リストの位置を記憶します)
(多くのページがある)で をFragmentStatePagerAdapter
使用するViewPager
と、メモリの問題が発生していたため、を使用しています。FragmentPagerAdapter
ListFragments
これはうまく機能しますが、フラグメントが再作成されたときにページ ( ) を元の位置に復元できるようにしたいと考えています。これは簡単に思えますが、それを達成するのはあまり運がありません。
誰にもヒントはありますか?
ありがとう