私はActionBarSherlockを使用しており、Android 開発者サイトで見つけたタブ ナビゲーションにこのパターンを適用しています。それはかなりうまくいっていますが、タブとフラグメントの間の関連付けを切り替えNAVIGATION_MODE_TABS
て保持できるようにしたいです。NAVIGATION_MODE_LIST
上で述べたパターンは、一般的なコードを保持するのに非常に適しています。そこで、リスナーをタブに追加し、次のように特定のフラグメントに関連付けます。
bar.addTab(bar.newTab()
.setText("MyFragment")
.setTabListener(new TabListener<SomeFragment>(this, "myfargment", SomeFragment.class)));
ジェネリックを使用して、関連するタブがクリックされたときにフラグメントをインスタンス化します。
public void onTabSelected(Tab tab, FragmentTransaction ft) {
if (mFragment == null) {
mFragment = Fragment.instantiate(mActivity, mClass.getName(), mArgs);
ft.add(android.R.id.content, mFragment, mTag);
} else {
ft.attach(mFragment);
}
}
私の質問は、リスト ナビゲーションモードでフラグメント間を移動するときに、どうすれば同様の方法を実現できるかということです。ActionBar のリストの for は、tablistener のように項目ごとではなく、リスト全体に対して機能するため、同様の方法を見つけることができませんでした。OnNavigationListener
または、次のようなことをしなければなりませんか:
@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId) {
switch (itemPosition) {
case 0:
//Replace the current fragment with FragmentA
break;
case 1:
//Replace the current fragment with FragmentB
break;
case 2:
//Replace the current fragment with FragmentC
break;
default:
break;
}
return true;
}
編集:
興味深い動作に気付きました:ナビゲーション モードが に設定されてNAVIGATION_MODE_TABS
いる場合、携帯電話を横向きモードにすると、タブがリストに変換され、フラグメントとリスト項目 (以前はタブ項目でした)の間の関連付けが維持されます。向きの変更ではなくオンデマンドでこの結果を達成しますか?