Android检测所选选项卡并更改操作栏

Android检测所选选项卡并更改操作栏,android,tabs,Android,Tabs,您好,我有一个包含选项卡栏的操作栏,在每个选项卡上,我想根据选择的选项卡更改操作栏标题/图标。如何检测我在哪个选项卡上并运行if语句,例如if-tab=tab1然后设置actionbar title 这是我的活动 ActionBar actionbar = getActionBar(); actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); getActionBar().se

您好,我有一个包含选项卡栏的操作栏,在每个选项卡上,我想根据选择的选项卡更改操作栏标题/图标。如何检测我在哪个选项卡上并运行if语句,例如
if-tab=tab1然后设置actionbar title

这是我的活动

         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) {


    }

}

您可以在每个片段中执行此操作:

private ActionBar actionBar;
在onActivityCreated中:

actionBar = ((ActionBarActivity)getActivity()).getSupportActionBar();
在片段onCreateView方法中

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_main, container, false);
    setHasOptionsMenu(true);
    return rootView;
}
然后在OnCreateOptions菜单(菜单菜单,菜单充气机)方法中


希望这个答案对你有所帮助。

你也可以用你的
方法

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;
    }
}

您需要做的是,在每个片段的可见性上设置标志。例如:创建一些常量类,并在该常量类中定义一些标志(根据需要,即选项卡的数量=标志的数量),现在当片段“A”可见时,使该标志为真,对其他选项卡执行相同操作,并更改相应的标志。最后,根据标志,在主活动中显示或隐藏actionbar中的项目
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;
    }
}