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