問題タブ [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.

0 投票する
1 に答える
224 参照

android - NavigationDrawer と FragmentStatePagerAdapter を一緒に機能させることはできません

アプリのナビゲーションに FragmentStatePagerAdapter で NavigationDrawer を使用しようとしています。アイデアは、NavigationDrawer の項目をクリックすると、2 つのタブを含む新しいフラグメントが開くというものです。

私の問題は、それを正しく機能させることができないことです。NavigationDrawer の項目をクリックすると、2 つのタブの代わりに 4 つ、次に 6 つ...

この問題は actionBar.removeAllTabs() で解決できますが、私の主な問題は、NavigationDrawer (フラグメント 1 -> フラグメント 2 -> フラグメント 1) の項目を再クリックして前のフラグメントに戻ると、空のフラグメントを取得しました。

他のページに記載されている内容に従っていくつかの変更を加えることで、この問題を解決しようとしましたが、うまくいきませんでした。

どんな助けでも大歓迎です、ありがとう!

これが私のメインフラグメントを管理するクラスです:

使用されるViewPagerは次のとおりです

私のフラグメントの構造は次のとおりです。

そして最後に、ここに私の MainActivity があります:

0 投票する
0 に答える
48 参照

android - フラグメントのサブセットを持つ FragmentStatePagerAdapter

この問題は、私が認めるよりも長く私を悩ませてきたので、私は助けを求めてここに来ました.

私の知る限り、Android のビットマップと OOM のために FragmentStatePagerAdapter を使用してフラグメントを表示することに制限されています。

ゲームを実装していて、フラグメントのセットがあります。これらのフラグメントの一部はロックできるため、リストをスワイプしても表示されません。

例えば:

1..10 個のフラグメントを含むセットがあります。このセットでは、フラグメント #5、#6、および #7 がロックされています。これは、ロック解除されたフラグメントの 2 つのサブセット (1..4 と 8..10) があることを意味します。

私が欲しい機能は、#1 から #4 へのスワイプと #8 から #10 へのスワイプです。

#4 から #5 へのスワイプ、および 2 つのサブセット間でのスワイプはできません。

フラグメント #4 を表示すると、#4 がリストの最後であるかのように機能するはずです。したがって、#8 を表示すると、他のサブセットにある場合は #8 がリストの先頭にあるように表示されるはずです。

何か提案はありますか?getItem をオーバーライドしてサブセットを渡そうとしましたが、主に NPE が発生したり、間違ったフラグメントが表示されたりしました。

0 投票する
0 に答える
411 参照

android - Android FragmentPagerAdapter と Fragment のビューのライフサイクル

FragmentPagerAdapter を正しく使用する方法について、多くの疑問があります。アダプターの作成方法やメソッドの実装方法ではなく、基礎となるフラグメントがインスタンス化されたビューを管理する方法に関連しています。

FragmentPagerAdapter に関する Android API では、次のように明示されています。

このバージョンのページャーは、一連のタブなど、通常はより静的なフラグメントをページングする必要がある場合に使用するのに最適です。ユーザーがアクセスする各ページのフラグメントはメモリに保持されますが、そのビュー階層は非表示のときに破棄される場合があります。フラグメントインスタンスは任意の量の状態を保持できるため、これにより大量のメモリが使用される可能性があります。より大きなページ セットの場合は、FragmentStatePagerAdapter を検討してください。

そのため、独自の onCreateView 内のフラグメントによって返されたビューは、Android によって破棄できると想定できます。また、3 つ以上のページがあり、ページ間を切り替えると、各フラグメントの onCreateView が同じフラグメント インスタンスに対して複数回呼び出されることも注目に値します。FragmentPagerAdapter API で指定された例は、このアプローチに最適なようです。

この例では、フラグメント自体でインスタンス化されたビューへの参照が保持されていないことに注意してください。ただし、ユーザー インタラクションでインターフェイスをさらに更新するために、インスタンス化されたビュー参照を保存する必要があることがよくあります。そのような場合、ドキュメントで提案されているように、ビュー階層は破棄されないと思います(フラグメント状態が破棄されないため)。

この場合、インスタンス化されたビューを保存し、次の onCreateView で再び戻るのは正当なことですか?

ビューを再利用するよりも、ViewPager の setOffscreenPageLimit を使用してメモリに保持されるページ数を増やしたほうがよいでしょうか?

ドキュメントがビュー階層を破棄できることを示唆しているため、疑問が生じますが、フラグメントにビュー参照を保持している場合...ガベージコレクターによって破棄することはできません。私は正しいですよ?

0 投票する
4 に答える
2629 参照

android - 縦向きと横向きの異なるアダプターを備えた ViewPager

縦向きモードでは、私のViewPager3 つのフラグメント A、B、C がありますが、横向きモードでは、2 つのフラグメント A と C しかありません。したがってFragmentStatePagerAdapter、モードごとに 2 つの を作成します。問題は、画面の向きが変更され、ViewPager元の向きの以前のフラグメントを復元して使用する場合です。たとえば、向きを縦向きから横向きに変更ViewPagerすると、A と C ではなく A、B の 2 つのフラグメントが表示されるようになりました。これが発生する理由はわかっていますが、これに対する適切な解決策を見つけることができません。

私の現在の回避策は、ViewPagerフラグメントの再利用を防ぐために (例: 縦向きの場合は id/viewpager_portrait、横向きのレイアウトの場合は id/viewpager_landscape)、異なる ID を使用することですが、古いフラグメントは破棄されず、メモリに保持されるため、メモリ リークが発生します。 .

アクティビティで super.onCreate(null) を呼び出す、またはアクティビティでのフラグメントを削除するなどの回避策を試しましたonCreateが、すべてアプリがクラッシュします。ViewPageronSaveInstanceState

だから私の質問はFragmentStatePagerAdapter、向きが変わったときに1つまたは複数のフラグメントを再利用しないようにする方法ですか?

どんな助けでも大歓迎です。少し早いですがお礼を。

0 投票する
1 に答える
956 参照

android - フラグメントが呼び出されたときに ListView を更新する方法 (FragmentStatePagerAdapter)

こんにちは、これが私の MainActivity For Tab です。3 つのフラグメントがあります。

2番目のフラグメントはデータベースにデータを追加し、3番目のフラグメントは変更されたかどうかを確認できます。しかし、2 番目のフラグメントでデータベースにデータを追加しても、3 番目のフラグメントには変更がありません。

3 番目のタブをクリックするだけで 3 番目のフラグメントを更新するにはどうすればよいですか。
以下はmainActivity、

以下は 3 番目のフラグメントです。

ご協力ありがとうございました

0 投票する
0 に答える
63 参照

android - FragmentStatePagerAdapter FragmentPagerAdapter は常に静的である方が良いですか?

ビューページャーの使い方を学んでいます。これらのクラスは、例では常に静的である方が優れていますが、最初にメモリを充電する場合の違いは何ですか?

0 投票する
1 に答える
3312 参照

android - Fragment を ViewPager に追加中にアクティビティが破棄されました

ViewPager動的な数のフラグメントを使用して を作成しています。次のようにFragmentStatePagerAdapter、これViewPagerにフラグメントのリストを提供します。

特定のボタンをクリックするとフラグメントリストが取得されるので、このフラグメントリストをに追加するためにFragment、次のメソッドをこれに追加しました。FragmentFragmentStatePagerAdapter

ヒント: 私のアプリではVerticalViewPagernotを使用していますが、これは と同じ動作をViewPagerするライブラリViewPagerですが、プロセス全体に影響を与えない変更が加えられています。

そして、これはログエラーです: