使用Actionbar在我的片段中无法使用菜单

时间:2013-07-04 05:55:56

标签: android menu

在我的片段中,我使用了两个菜单项,一个用于设置,另一个用于gridview。当我点击任何一个未触发的菜单项时。并将登录Onoptionitemselected但未输入此内请任何一个帮助谢谢......

 @Override
        public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {


            menu.clear();
            getActivity().getMenuInflater().inflate(R.menu.settingmenu, menu);
            getActivity().getMenuInflater().inflate(R.menu.menugridcalendar, menu);
            super.onCreateOptionsMenu(menu, inflater);


        }


    @Override
        public boolean onOptionsItemSelected(MenuItem item) {

            switch (item.getItemId()) {

            case R.id.menu_setting:
                Log.i(TAG,"InsdieGridmenu");
                Intent intent = new Intent(getActivity(), SettingPage.class);
                startActivity(intent);
                break;
            case R.id.gridmenuid:
                Activity activity = getActivity();
                if (activity instanceof ListItemClickListener) {
                    ((ListItemClickListener)activity).OpenGridView();
                }
                break;
            }
            return true;


        }

2 个答案:

答案 0 :(得分:4)

确保在onCreate()中设置setHasOptionsMenu(true);

答案 1 :(得分:0)

Hai我找到了回答我的问题。如果您在操作栏中使用菜单,则根据您的需要在您的片段中定义以下onCreateOptionsMenu。

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);
        menu.clear();
        getActivity().getMenuInflater().inflate(R.menu.settingmenu, menu);
        getActivity().getMenuInflater().inflate(R.menu.menulistcalendar, menu);

    } 

您的OptionItemSelected操作必须写在主操作栏活动中。

 @Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.menu_setting:
        Intent intent = new Intent(this, SettingPage.class);
        startActivity(intent);
        break;
    case R.id.gridmenuid:
        this.OpenGridView();
    }
    return true;
}