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で定義するため、次のようなエラーが発生するようです。
Caused by: java.lang.IllegalArgumentException: Binary XML file line #15: Duplicate id 0x7f090009, tag frgCustomerList, or parent id 0x7f090008 with another fragment for de.xyz.is.android.fragment.CustomerListFragment_
現時点では、私は自分自身で結論を下しています。4.1でも、2.xプラットフォームをターゲットにしたくない場合は、スクリーンショットに示すようなネストされたフラグメントは、サポートライブラリなしでは不可能です。
(これは実際には質問というよりもウィキのエントリである可能性がありますが、他の誰かが以前に管理したことがあるかもしれません)。
アップデート:
役立つ答えは次のとおりです。フラグメント内部フラグメント