Navigation Drawer
ネストされたフラグメントを使用しているアプリを作成しています。ナビゲーション ドロワーは、Android のドキュメントとほぼ同じように作成されています。動作します。ナビゲーション ドロワーを常に表示したいので、アクティビティを 1 つ使用し、フラグメントを交換するだけです。フラグメントの 1 つは でViewPager
、これにはページとして独自のフラグメントがあります。
ナビゲーションは次のように階層化されています。
- Home
- Fragment 1
-- Subfragment 1.1
-- Subfragment 1.2
-- Subfragment 1.3
- Fragment 2
-- Subfragment 2.1
-- Subfragment 2.2
-- Subfragment 2.3
Fragment は でViewPager
、Subfragments はそのページです。Fragment
引き出しから移動するとすべて正常に動作しますが、特定のページ (ネストされたフラグメント)に直接切り替える方法がわかりませんViewPager's
。
ナビゲーション ドロワーのクリックを処理する MainActivity:
@Override
protected void onNavItemSelected(int id) {
switch ((int)id) {
case 1:
getSupportFragmentManager().beginTransaction()
.replace(R.id.content_frame, new MainFragment())
.addToBackStack(null).commit();
break;
case 100:
getSupportFragmentManager().beginTransaction()
.replace(R.id.content_frame, new Fragment1())
.addToBackStack(null).commit();
break;
case 200:
getSupportFragmentManager().beginTransaction()
.replace(R.id.content_frame, new Fragment2())
.addToBackStack(null).commit();
break;
.
.
.
}
}
getChildFragmentManager()
これはandを使用する必要があると思いますViewPager's
setCurrentItem()
が、メインアクティビティで最初のものを取得できず (または方法がわからない)、このようなことをするとページャーがまだ作成されていないため、2 番目のものを使用できません:
SubFragment11 a = new SubFragment11();
getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, a).addToBackStack(null).commit();
a.setCurrentPagerItem(2);