問題タブ [fragmentpageradapter]

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 投票する
4 に答える
19997 参照

android - getItemPosition(Object object) を使用して FragmentStatePagerAdapter でページを並べ替える

getItemPosition(Object object)ページを並べ替える目的でオーバーライドすると、 FragmentStatePagerAdapter が正しく動作しないと思います。

以下は簡単な例です。初期状態では、ページの順番は{A, B, C}です。を呼び出すtoggleState()と、ページの順序が {A, C, B} に変わります。をオーバーライドgetItemPosition(Object object)することで、現在表示されているページ (A、B、または C) が変更されないようにします。

間違っていると思われる 2 つの異なる動作に遭遇しました。

  1. すぐに呼び出すとtoggleState()(ページ A を表示しているときに、他のページにスワイプする前に)、アプリがクラッシュします。

    のソースを見ると、これは136 行で呼び出す前に (113 ~ 115 行FragmentStatePagerAdapterのように) のサイズを最初にチェックすることで修正されます。mFragmentsset()

  2. 最初にページ B にスワイプしてからgetItem(2)呼び出されると、ページ C が作成され、mFragmentsサイズが 3 になりました (これにより、上記のクラッシュがすぐに発生するのを防ぐことができます)。次に、スワイプしてページ A に戻ると、ページ C が破棄されます (2 ページ離れているため、デフォルトのオフスクリーン ページ制限 1 を使用しているため)。今、私は電話しますtoggleState()。ページ B は現在破棄されています。ただし、ページ C は再作成されません。つまり、右にスワイプすると空のページが表示されます。

まず、私が正しくてこれらが実際にバグなのか、それとも私が何か間違ったことをしているのかを知ることができればうれしいです. それらがバグである場合、誰かが回避策を提案できますか (サポート ライブラリを自分でデバッグして再構築する以外に)。確かに、誰かがgetItemPosition(Object object)正常にオーバーライドしたに違いありません (すべてを に設定することは別としてPOSITION_NONE)?

サポート ライブラリの現在のリビジョン (10) を使用しています。

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

android - Android onCreateを呼び出さずにViewPagerに膨張したレイアウトの向きを変更するにはどうすればよいですか?

私はいくつかのレイアウトをロードし、スライドで何かをしているビューページャーを使用しています。アクティビティが方向を変更しているときに、ページャーがデータを再度ロードせずにレイアウトを特定の方向に変更できるようにしたい。これは可能ですか??

onCreate メソッドを何度も呼び出さないようにするには、マニフェストで次の行を指定してから onConfigurationChanged を使用する必要があることを私は知っています。

Android:configChanges="向き"

ただし、これを行うと、レイアウトは向きに応じて正しいレイアウトをロードしません (したがって、ランドスケープ ロードの場合はランドスケープ レイアウトをロードします)。代わりに、ロードされたレイアウトを保持してサイズを変更します。

0 投票する
2 に答える
4986 参照

java - Android が FragmentPagerAdapter 内でフラグメントの順序を変更する

FragmentPagerAdapter 内に ~20 個のフラグメントがあり、フラグメントを選択するリストが含まれているため、フラグメントの再作成はありません。

FragmentPagerAdapter は ViewPager のアダプターとして設定され、その後、フラグメントを並べ替えます (シャッフルはテスト用でした)。

何らかの理由で、順序が異なるため getItem に対して異なるフラグメントを返す場合でも、タイトルの順序のみが変更されています。これはなぜですか、どうすれば回避できますか?

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

android-viewpager - ViewPager および Fragment Pager アダプターの実装

ビューページャーとフラグメントページャーアダプターを使用して、スライドビュー/フラグメントを実装しようとしています。convert_home は、android.support.v4.view.PagerTitleStrip を含む私のメインの xml ファイルです。

温度.xml と速度.xml は、私の他の 2 つのビューです。どこが間違っているのかわかりません。アプリがクラッシュしています (ロード中)

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

java - 3 つのフラグメントを追加すると IllegalStateException がスローされる

生成されたアクティビティをスワイプ ビューとタイトル ストリップで使用しました。私のコードはアクティビティごとに 2 つのフラグメントで動作しましたが、3 つ追加すると強制終了します。

エラーは次のとおりです。

ここに私のアクティビティクラス MainMenu があります:

各フラグメントはほぼ同一であるため、そのうちの 1 つだけを含めます。

ここに私の InsertCity クラスがあります:

SectionsPagerAdapter クラスまたはビューの削除に関係していると確信していますが、修正方法がわかりません。

助けていただければ幸いです。

本当にありがとう!

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

java - PagerAdapter にすべてのページを読み込ませる方法


PagerAdapterデフォルトでは、現在、次、および前のページのみが読み込ま れることを知っています。それを変更して、すべてのページをロードする方法はありますか? ありがとう!

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

android - Viewpager がビューを適切に保持しない

作成した多数のタブフラグメントにスワイプできるビューページャーを含むレイアウトを膨張させる SherlockFragment があります。
このフラグメントが最初にアクティビティにアタッチされたときは、すべて正常に動作し、期待どおりに動作しますが、戻ってフラグメント、ビューページャーまたはそのアダプターを再入力すると(次のようになります:「TabAdapter extends FragmentPagerAdapter implement ActionBar.TabListener, ViewPager.OnPageChangeListener")が問題を引き起こしています:

  1. ビューページャーに格納されたフラグメントのビューが表示されない
  2. 実際には4つのタブがあります。「setOffscreenPageLimit」を設定すると、何をしていても、レクリエーション時にビューページャーに何も表示されなくなります。
    「setOffscreenPageLimit」が設定されていない場合、ビューページャー内のビューは、少なくとも 2 つのタブを左右にスワイプした場合にのみ表示されます。
  3. また、「setOffscreenPageLimit」が使用されていない場合、スワイプ中にページャーが一部のタブをスキップしているようです。

この問題を解決できるアイデアをありがとう。

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

android - DialogFragment 内の ViewPager + FragmentPagerAdapter は、「IllegalArgumentException:No view found...」を取得します。

FragmentPagerAdapter (画像で構成される Fragments を提供する) によってコンテンツが指定される ViewPager がある FragmentDialog (ビュー階層にコンテンツとして追加されないダイアログとして作成および表示) を表示しようとしています。

FragmentActivity から ViewPager + FragmentPagerAdapter を表示する場合、コードは完全に機能しますが、FragmentDialog から実行すると次の例外が発生します。

「IllegalArgumentException: フラグメント SimpleFragment の ID 0x7f040077 のビューが見つかりません...」

これが私のコードです:

ダイアログを作成して表示するためのボタンを持つ SherlockFragmentActivity。

FragmentDialog:

これは非常に単純な MyFragmentPagerAdapter です。getItem() メソッドと nullPointer チェックのみを配置します。

そして最後に SimpleFragment:

詳細については、アダプターに渡されたコンテンツ (3 つの int を持つ int 配列) の長さがゼロの場合、アダプターはフラグメントを作成しようとしないため、ダイアログは正しく表示されますが空です (期待どおり)。インフレ時に SimpleFragment.onCreateView() で例外がスローされます。例外で参照される ID (見つからないため) は ViewPager の ID に対応し、R.layout.simple_fragment で適切に定義されています。

AlertDialog.builder を使用して Dialog をビルドし、Dialog() コンストラクターを使用して直接ビルドしようとしましたが、同じ動作が得られます。

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

android - 選択したタブで FragmentPagerAdapter の最初のフラグメントの再作成を無効にする方法は?

onCreateViewFragmentPagerAdapter の最初のフラグメントはあまり速くありません。そのため、現在のタブを最初に変更すると遅延が発生します。

選択したタブの FragmentPagerAdapter で最初のフラグメントの再作成を無効にする方法は?

0 投票する
5 に答える
50130 参照

android - FragmentPagerAdapterはAndroid.Support.V4.Appにのみ存在します(Android.Appには存在しません)

Android.App内にFragmentPagerAdapterが見つかりません。

ターゲットAPIが14以上(Android 4.0以降)であるため、Android.Support.V4.Appのフラグメントを使用したくありません。そのため、Android.App.Fragmentsのプレーンと、それに関連するクラスを使用したいと思います。

Android.Support.V4.App内でしか見つかりませんでしたが、Android.App.Fragment(Android.Support.V4.App.Fragmentではありません)を使用しようとしているので、これでは不十分です。 Android.App内の関連クラス(Android.Support.V4.Appではない)、およびサポートライブラリからの場合はFragmentPagerAdapterからページャーを派生させた場合、Android.AppとAndroid.Supportの間でタイプの不一致が発生するため、コードがコンパイルされません.V4.App。

ここの場合と同じように、android.app.Fragmentにキャストできませんが、FragmentPagerAdapterなどの代わりに使用する必要がある「通常の」ページャー(PagerAdapter)クラスはありますか(FragmentActivityではなく通常のActivityから派生した場合と同じです)。 API 11以降を対象とする場合)。

これが私が使用しているサンプルコードです(https://github.com/xamarin/monodroid-samples/tree/master/Support4にあるMonoDroidの例からのSupport4.slnソリューション内のFragmentPagerSupport.csファイル)。

Android.Support.V4.Appを参照する行をコメントアウトし、Android.Appを参照するコードに置き換えました。Android.Support.V4.Appの外に、私が見つけたFramePagerAdapterはありません。本当に必要です)。

ありがとう。