加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 以编程方式切换Action Bar选项卡 – 如何附加参数?

发布时间:2020-12-15 05:09:48 所属栏目:Java 来源:网络整理
导读:我正在切换我的 Android(Sherlock)Action Bar选项卡,如 this question: Programmatically switch tabs in Android using ActionBarSherlock中所述. 有没有办法将参数传递给被调用的选项卡? 在期待中感谢! @semperfly要求的更多信息: 我的MainActivity有
我正在切换我的 Android(Sherlock)Action Bar选项卡,如 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);

这有效但现在我无法将参数传递给要激活的选项卡.

解决方法

晚了,但你可以用:

getActivity().getActionBar().setSelectedNavigationItem(1); //where 1 equals the 2nd tab

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读