我正在切换我的Android(Sherlock)操作栏标签,如this question: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);
这样可行,但现在我无法将参数传递给要激活的选项卡。
答案 0 :(得分:13)
迟到了,但你可以使用:
getActivity().getActionBar().setSelectedNavigationItem(1); //where 1 equals the 2nd tab
答案 1 :(得分:0)
似乎这可能是我的问题的答案 Fragments - Creating event callbacks to the activity