Android 检测选定的选项卡并更改 ActionBar

标签 android tabs

嗨,我有一个包含 TabBar 的 ActionBar,在每个选项卡上我想根据选择的选项卡更改操作栏标题/图标。如何检测我所在的选项卡并运行 if 语句,例如 if tab = tab1 then set actionbar title

这是我的 Activity

         ActionBar actionbar = getActionBar();
         actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
         getActionBar().setTitle("");
         getActionBar().setIcon(R.drawable.ab_logo);
         getActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#000000")));
         actionbar.setStackedBackgroundDrawable(new ColorDrawable(Color.parseColor("#eeeeee")));


         LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
         View tabView = inflater.inflate(R.layout.tab_3, null);


         ActionBar.Tab Tab1 = actionbar.newTab().setIcon(R.drawable.ic_tab_1);
         ActionBar.Tab Tab2 = actionbar.newTab().setIcon(R.drawable.ic_tab_2);
         ActionBar.Tab Tab3 = actionbar.newTab().setCustomView(tabView);
         ActionBar.Tab Tab4 = actionbar.newTab().setIcon(R.drawable.ic_tab_4);
         ActionBar.Tab Tab5 = actionbar.newTab().setIcon(R.drawable.ic_tab_5);



         Fragment Fragment1 = new Fragment1();
         Fragment Fragment2 = new Fragment2();
         Fragment Fragment3 = new Fragment3();
         Fragment Fragment4 = new Fragment4();
         Fragment Fragment3 = new Fragment5();


         Tab1.setTabListener(new MyTabsListener(Fragment1));
         Tab2.setTabListener(new MyTabsListener(Fragment2));
         Tab3.setTabListener(new MyTabsListener(Fragment3));
         Tab4.setTabListener(new MyTabsListener(Fragment4));
         Tab5.setTabListener(new MyTabsListener(Fragment5));

         actionbar.addTab(Tab1);
         actionbar.addTab(Tab2);
         actionbar.addTab(Tab3);
         actionbar.addTab(Tab4);
         actionbar.addTab(Tab5);

    }


    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt("tab", getActionBar().getSelectedNavigationIndex());
    }

}

这是我的 TabListener 类

public class TabListener implements ActionBar.TabListener {
    public Fragment fragment;
    public Context c;
    public ActionBar actionbar;

    public TabListener(Fragment fragment, Context con) {
        this.fragment = fragment;
        this.c = con;
    }   



    @Override
    public void onTabReselected(Tab tab, FragmentTransaction ft) {


    }

    @Override
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        ft.replace(R.id.fragment_container, fragment);

    }

    @Override
    public void onTabUnselected(Tab tab, FragmentTransaction ft) {


    }

}

最佳答案

您也可以在 onTabSelected 方法中执行此操作

public void onTabSelected(Tab tab, FragmentTransaction ft) {
    ft.replace(R.id.fragment_container, fragment);

    switch (tab.getPosition()) {
        case 1:
            actionbar.setTitle("new title");
            actionbar.setIcon(iconDrawable);
            break;
        case 2:
            actionbar.setTitle("new title");
            actionbar.setIcon(iconDrawable);
            break;
    }
}

关于Android 检测选定的选项卡并更改 ActionBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25326976/

相关文章:

android - 如何在应用程序在 android 中最小化时发出通知?

android - smack 4.2.0 错误 : IN AAAA yielded an error response NX_DOMAIN

Android 膨胀日历布局时出错

android - thread/runnable, handler, runonuithread, asynctask 之间的区别

android - pager.setAdapter() 中的空指针异常

image - 将图像或图标添加到 primefaces 选项卡标题

android - TextInputEditText - 使可点击但不可编辑

tabs - 将值附加到人力车图形轴以及什么是滴答处理和保留

mouse - 在 gvim 中用鼠标重新排列标签

android - 留在屏幕上的 TabLayout 原始 fragment