問題タブ [android-nested-fragment]
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 - Android FragmentTab ホストと Fragments 内の Fragments
次のような階層を持つアプリがあります。
すべてのフラグメント ビューがリソースから膨張しています。
アプリが起動すると、すべてが表示され、問題なく表示されます。最初のタブから別のタブに切り替えて再び戻ると、タブ 1 のビューを再作成しようとしてインフレ例外が発生します。
もう少し深く掘り下げると、これが起こっていることです:
- 最初の読み込みで、スプリッター ビューを拡張すると、その 2 つの子フラグメントがフラグメント マネージャーに追加されます。
- 最初のタブから切り替えると、ビューは破棄されますが、子フラグメントはフラグメント マネージャーに残ります。
- 最初のタブに戻ると、ビューが再度膨張し、古い子フラグメントがまだフラグメント マネージャーにあるため、新しい子フラグメントが (膨張によって) インスタンス化されると例外がスローされます。
フラグメント マネージャーから子フラグメントを削除することでこの問題を回避し (Mono を使用しています)、例外なくタブを切り替えることができるようになりました。
だから私はいくつかの質問があります:
- 上記はこれを行う正しい方法ですか?
- そうでない場合、どのようにすればよいですか?
- いずれにせよ、タブを切り替えたときにビューステートが失われないように、インスタンスの状態を保存することはこれらすべてにどのように結びついているのでしょうか?
android - 置き換えられた ViewPager と BackStack のライフサイクル?
Android ViewPager のライフサイクルがめちゃくちゃになっていて、アプリの構造に何か問題があるのではないかと考え始めています。そのため、次のことができるかどうか確認をお願いします。
- いくつかのタブを表示するアプリケーションがあります。これらのタブの 1 つは、2 つの ListFragments がある ViewPager を表示しています。これらの ListFragments は、ViewPager の onCreate イベントで作成されます。
- ListFragments の 1 つのアイテムをクリックすると、ViewPagerFragment 全体が別のフラグメント (別の ListFrament) に置き換えられます。
ViewPager を新しい ListFragment に置き換えるために使用するコードは次のとおりです。
そこから、すべてがうまく機能しています。しかし、ユーザーが戻るボタンをクリックすると、次のような状況になります。
- ViewPager は (onCreateView から) 正常にリロードされますが、内部の ListFragment は表示されません。私のListFragmentのオブジェクトはまだ生きているように見えますが、ビューを失ったようです.onCreateViewはそれを再作成するために呼び出されていません.
私の意図は、私がやろうとしていることが Android の考え方で問題ないかどうかを知ることであるため、今のところこれ以上コードを投稿することはありません。やりたいことをアーカイブするために、Android SDK と戦わなければなりませんか?
android - actionBar androidでFragmentからDialogFragmentを表示する方法
フラグメントで Tabs ActionBar を使用します。1 つのフラグメント内にボタンがあります。DialogFragment
ボタンが押されたときに (フラグメント内に)を表示したい。どうやってやるの?
これは私のコードです
android - サポートライブラリを使用せずにAndroid4.0、4.1(<4.2)でネストされたフラグメントのベストプラクティス
4.0および4.1タブレット用のアプリを作成しています。このアプリでは、サポートライブラリ(不要な場合)を使用したくありませんが、4.xAPIのみを使用します。
したがって、私のターゲットプラットフォームは次のように非常に明確に定義されています:>=4.0および<=4.1
このアプリには、マルチペインレイアウト(2つのフラグメント、左側に1つ、右側に1つのコンテンツフラグメント)とタブ付きのアクションバーがあります。
これに似ています:
アクションバーのタブをクリックすると、「外側」のフラグメントが変更され、内側のフラグメントは2つのネストされたフラグメント(1.小さな左リストフラグメント、2。広いコンテンツフラグメント)を持つフラグメントになります。
フラグメント、特にネストされたフラグメントを置き換えるためのベストプラクティスは何でしょうか。ViewPagerはサポートライブラリの一部であり、このクラスに代わるネイティブの4.xはありません。私の意味では「非推奨」のように見えます。-http ://developer.android.com/reference/android/support/v4/view/ViewPager.html
次に、Android 4.2のリリースノートを読みましたChildFragmentManager
。これは適切ですが、4.0と4.1をターゲットにしているため、これも使用できません。
ChildFragmentManager
4.2でのみ利用可能です
- http://developer.android.com/about/versions/android-4.2.html#NestedFragments
- http://developer.android.com/reference/android/app/Fragment.html#getChildFragmentManager()
残念ながら、Android開発者ガイド全体であっても、サポートライブラリなしでフラグメントを使用するためのベストプラクティスを示す良い例はほとんどありません。特にネストされたフラグメントに関しては何もありません。
だから私は疑問に思っています:サポートライブラリとそれに付属するすべてのものを使用せずに、ネストされたフラグメントを使用して4.1アプリを作成することは単純に不可能ですか?(Fragmentなどの代わりにFragmentActivityを使用する必要がありますか?) または、ベストプラクティスは何でしょうか?
私が現在開発中に抱えている問題は、まさにこの声明です。
Androidサポートライブラリもネストされたフラグメントをサポートするようになったため、Android1.6以降でネストされたフラグメントのデザインを実装できます。
注:レイアウトに。が含まれている場合、レイアウトをフラグメントに膨らませることはできません
<fragment>
。ネストされたフラグメントは、フラグメントに動的に追加された場合にのみサポートされます。
ネストされたフラグメントをXMLで定義するため、次のようなエラーが発生するようです。
現時点では、私は自分自身で結論を下しています。4.1でも、2.xプラットフォームをターゲットにしたくない場合は、スクリーンショットに示すようなネストされたフラグメントは、サポートライブラリなしでは不可能です。
(これは実際には質問というよりもウィキのエントリである可能性がありますが、他の誰かが以前に管理したことがあるかもしれません)。
アップデート:
役立つ答えは次のとおりです。フラグメント内部フラグメント
android - android.support.v4.app.Fragment: 未定義のメソッド getChildFragmentManager()
ActionBarSherlock
andを使用しておりViewPageIndicator
、ネストされたフラグメントを実装しようとしましたが、メソッドgetChildFragmentManager()
は my で定義されていませんandroid.support.v4.app.Fragments
。
その他のエラーはなく、ABS と VPI は期待どおりに機能します。
サポート ライブラリ v13 は使用していません。最新バージョンを使用しており、プロジェクトをクリーンアップしました。通常android.app.Fragment
は文句を言いませんgetChildFragmentManager()
。
また、サポート ライブラリの依存関係 (ABS、VPI およびそれを参照するメイン プロジェクト内の android-support-v4.jar、または外部 jar としての android-support-v4.jar) の再配置を試みましたが、getChildFragmentManager()
未定義のままです。
ただし、VPI を削除するとgetChildFragmentManager()
機能しますが、もちろん VPI は機能しなくなります。したがって、依存関係に何か問題があるに違いありませんが、試すアイデアが不足しています。
どんな助けでも大歓迎です!
android - FragmentTabHost からネストされたフラグメントへの参照を取得する
私のアプリケーションでは、withActivity
を保持する を使用しているため、そのすべてのタブはです。Fragment
FragmentTabHost
nested Fragments
とともにActivity
を保持する の内部では、を使用して添付されたものへの参照を取得できます。Fragment
nested Fragment
onAttachedFragment()
しかし、nested Fragment
fromへの参照を取得する方法はFragmentTabHost
?
android - フラグメントを更新する 設定変更から戻って表示する
私が達成しようとしているのは、誰かが設定から戻って設定を変更したときにビューを更新することです。これでうまくいくと思ったのですが、そうではありません。これを達成する方法についてのアイデアはありますか?
android - フラグメントを含む Android タブ付きダイアログを作成するには?
誰かが私に例を指摘したりTabbed Dialog
、各タブのコンテンツがあるAndroidでシンプルなものを作成する方法を教えてもらえますFragments
か? 私が見つけたすべての例/チュートリアルはフラグメントとタブに関するものですが、に固有のものはありませんDialogFragments
。
のドキュメントにFragmentTabHost
は、 を使用して通常のフラグメント内にタブを作成する方法が示されていますgetChildFragmentManager()
。これは、フラグメントが a の場合にも機能するはずですDialogFragment
が、試してみると次のようになります。
ビューを設定するための私のコードは次のとおりです(その後、に渡されAlertDialog.setView()
ます):
android - TabFragment の ViewPager が 2 回目に読み込まれない
ViewPager
の一部であるフラグメントに があるアプリを作成しようとしていTabHost
ます。すべてがうまくいきます。タブバーがあり、タブを切り替えることができます。でタブに切り替えるとViewPager
、すべてが正しく表示されます。
ただし、このタブを離れてこのタブに戻るとすぐにViewPager
、コンテンツが表示されません。横に 2 回スクロールすると次の画像が表示され、2 回戻ると画像が読み込まれていることもわかります (おそらくoffscreenloaded
)。
私TabFragment
がそれに戻ったときに私のものが再インスタンス化されていることを確認してくださいViewPager
。