私は4.0および4.1タブレット用のアプリを書いています。そのため、サポートライブラリ(必要でない場合)を使用したくないので、4.x APIのみを使用します。
だから私のターゲットプラットフォームは次のように非常によく定義されています:> = 4.0および<= 4.1
アプリにはマルチペインレイアウト(2つのフラグメント、左側に小さなフラグメント、右側に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 Support Libraryはネストされたフラグメントもサポートするようになり、ネストされたフラグメントデザインをAndroid 1.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プラットフォームをターゲットにしたくない場合、サポートライブラリがないと、スクリーンショットに示すようなネストされたフラグメントは不可能です。
(これは実際には質問よりもwikiエントリのほうが多いかもしれませんが、おそらく他の誰かが以前にそれを管理したことがあります)。
更新:
役立つ答えは次のとおりです:Fragment Inside Fragment
ActionBar
(Samsungが自社で構築した)カスタム実装に常に直面する可能性があることを覚えておいてください。ActionBarSherlockをよく見てください。スペースがある場合は、ActionBarにタブがあります。