1

我正在开发一个应用程序,其中我有四个选项卡。我希望在单击每个选项卡时,操作栏应该改变。现在我已经给出了操作栏标题、搜索栏和溢出图标。但我想在选择时更改操作栏每个选项卡,以便我可以根据选择相应选项卡的要求在操作栏中添加图标。

这是我的 ontabselection 代码,请建议我能做什么。任何帮助都是可以接受的。

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

        }

谢谢。

4

2 回答 2

2

我看到你正在使用片段来做你的标签。您可以很容易地为每个片段声明一个 menu.xml 文件。在片段的 oncreate 中使用 sethasOptionmenu(true)。然后,您可以根据需要在 onCreate Option 菜单()中调整内容。

编辑:这里有一个例子:

    @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
}
于 2013-11-08T13:10:07.947 回答
0

类似于 Poutrathor 的东西,但对我来说更清晰。我从这里得到它:https ://stackoverflow.com/a/15218201/1887635

@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);
}
于 2014-06-30T18:12:17.893 回答