この質問で説明されているように、Android (Sherlock) アクション バーのタブを切り替えています: Programmatically switch tabs in Android using ActionBarSherlock。呼び出されたタブに引数を渡す
方法はありますか?
期待してありがとう!
@semperfly から要求された詳細情報:
私の MainActivity には ActionBar があり、ActionBar.TabListener を実装しています
actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
tabCalculate = actionBar.newTab();
tabCalculate.setText("Calculate");
tabCalculate.setTabListener(this);
actionBar.addTab(tabCalculate);
tabArchive = actionBar.newTab();
tabArchive.setText("Archive");
tabArchive.setTabListener(this);
actionBar.addTab(tabArchive);
これは ActionBar.TabListener の実装です。
public void onTabSelected(Tab tab, android.support.v4.app.FragmentTransaction ft) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
SherlockFragment fragment = null;
if( tabCalculate.equals(tab) ) {
if( fragmentInput == null ) {
fragmentInput = new FragmentInput();
}
fragment = fragmentInput;
} else if ( tabArchive.equals(tab)) {
if( fragmentArchive == null ) {
fragmentArchive = new FragmentArchive();
}
fragment = new FragmentArchive();
}
fragmentTransaction.replace(R.id.fragmentsContainer, fragment);
fragmentTransaction.commit();
}
public void onTabUnselected(Tab tab, android.support.v4.app.FragmentTransaction ft) {
}
public void onTabReselected(Tab tab, android.support.v4.app.FragmentTransaction ft) {
}
私の最初のアプローチは、次のように ArchiveFragment から InputFragment をロードすることでした。
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
SherlockFragment fragment = new FragmentInput();
Bundle arguments = new Bundle();
arguments.putSerializable(FragmentInput.ARG_INPUTDATA_TO_LOAD, inputData);
fragment.setArguments(arguments);
fragmentTransaction.replace(R.id.fragmentsContainer, fragment);
fragmentTransaction.commit();
これは完全に正常に機能しましたが、それに応じて ActionBar のアクティブなタブ インジケーターを切り替えませんでした。入力フラグメントがアクティブであったにもかかわらず、アーカイブ タブの下の青い線がアクティブでした。
次に、この方法を試してタブ/フラグメントを切り替えました:
getSherlockActivity().getSupportActionBar().setSelectedNavigationItem(0);
これは機能しますが、アクティブ化するタブに引数を渡すことができなくなりました。