Android 如何在更改选项卡时更改操作栏?
我正在开发一个应用程序,其中我有四个选项卡。我希望在单击每个选项卡时,操作栏应该更改。现在我已经给出了操作栏标题、搜索栏和溢出图标。但我希望更改每个选项卡选择的操作栏,以便我可以根据选择相应选项卡的要求在操作栏中添加图标 这是我的竞选代码,请建议我能做什么。任何帮助都是可以接受的Android 如何在更改选项卡时更改操作栏?,android,tabs,android-actionbar,Android,Tabs,Android Actionbar,我正在开发一个应用程序,其中我有四个选项卡。我希望在单击每个选项卡时,操作栏应该更改。现在我已经给出了操作栏标题、搜索栏和溢出图标。但我希望更改每个选项卡选择的操作栏,以便我可以根据选择相应选项卡的要求在操作栏中添加图标 这是我的竞选代码,请建议我能做什么。任何帮助都是可以接受的 public void onTabSelected(Tab tab, FragmentTransaction ft) { // TODO Auto-generated method stub
public void onTabSelected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
FragmentTransaction fragMentTra;
if (tab.getText().equals("DEALS")) {
try {
rl.removeAllViews();
} catch (Exception e) {
}
ActionBar actionBar = getActionBar();
actionBar.show();
actionBar.setTitle("Deals");
FragmentDeals Fram1 = new FragmentDeals();
//fragMentTra.addToBackStack(null);
fragMentTra = getFragmentManager().beginTransaction();
fragMentTra.add(rl.getId(), Fram1);
fragMentTra.commit();
}
else if (tab.getText().equals("ORDER")) {
try {
rl.removeAllViews();
} catch (Exception e) {
}
ActionBar actionBar = getActionBar();
actionBar.show();
actionBar.setTitle("Order");
FragmentOrder Fram2 = new FragmentOrder();
//fragMentTra.addToBackStack(null);
fragMentTra = getFragmentManager().beginTransaction();
fragMentTra.add(rl.getId(), Fram2);
fragMentTra.commit();
}
else if(tab.getText().equals("CART")){
try {
rl.removeAllViews();
} catch (Exception e) {
}
ActionBar actionBar = getActionBar();
actionBar.show();
actionBar.setTitle("Shopping Cart");
FragmentCart fram3 = new FragmentCart();
//fragMentTra.addToBackStack(null);
fragMentTra = getFragmentManager().beginTransaction();
fragMentTra.add(rl.getId(), fram3);
fragMentTra.commit();
}
else if(tab.getText().equals("HISTORY")){
try {
rl.removeAllViews();
} catch (Exception e) {
}
ActionBar actionBar = getActionBar();
actionBar.show();
actionBar.setTitle("History");
FragmentHistory fram4 = new FragmentHistory();
//fragMentTra.addToBackStack(null);
fragMentTra = getFragmentManager().beginTransaction();
fragMentTra.add(rl.getId(), fram4);
fragMentTra.commit();
}
}
谢谢。我看到您正在使用片段来制作制表符。可以很容易地为每个片段声明一个menu.xml文件。在片段的oncreate中使用sethasOptionmenu(true)。然后,如果需要,可以在onCreate Option menu()中调整内容 编辑:这里有一个例子:
@Override
public void onCreate(Bundle arg0) {
super.onCreate(arg0);
setHasOptionsMenu(true);
actionBar = ((ActionBarActivity)getActivity()).getSupportActionBar();
}
@Override
public void onCreateOptionsMenu(android.view.Menu menu, android.view.MenuInflater inflater) {
if (!hideOptionsMenu) {
Log.e(TAG, " - onCreateOPTIONMenu");
inflater.inflate(R.menu.booking_accepted, menu);
MenuItem cancel = menu.findItem(R.id.cancel_booking_accepted);
cancel.getIcon().setAlpha(Constants.ENABLED_OPACITY);
menu.findItem(R.id.my_trips_switch).getIcon().setAlpha(Constants.ENABLED_OPACITY);
}
// (optional) reference to a OnItemSelectedListener, that you can use to perform actions based on user selection
}
类似于普特拉索,但对我来说更清楚。我从这里得到的:
您想为每个选项卡添加菜单项,对吗?是的,您是对的。我想添加菜单项。我们必须使ActionBarActivity?啊。ActionBarActivity在这里是为了兼容性。您必须决定要向后兼容哪个版本。是的。我所说的并没有被证明是正确的,我和你一样是初学者。但据我所知:actionbar是一个内置组件,您可以向其中添加菜单项。操作栏将从xml文件中提取这些项(按钮)。您可以为活动声明一个文件。您还可以为片段声明一个文件。因此,当片段被设置为显示的片段(例如:viewpager)时,android将调用活动菜单,然后调用片段菜单。通常,会为活动声明注销和设置(因此始终存在),但每个片段都可以有其操作菜单(打印和发送)
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.fragment_xxx, menu);
}