Android 如何处理菜单项ActionBar的onClick事件之间的切换

Android 如何处理菜单项ActionBar的onClick事件之间的切换,android,android-actionbar,Android,Android Actionbar,我的问题有点难以解释,请耐心听我说, 我为一个应用程序实现了actionBar,我在actionBar上有5-6个菜单项,并使用 onOptionsItemSelected(MenuItem item) 每个菜单项单击都会在公共区域中膨胀特定视图[即膨胀视图彼此重叠,而不是公共容器], 我需要删除该视图,并在单击另一项时放大另一个视图,我使用简单的if比较语句来实现这一点 虽然解决方案很简单,但实现它并检查如此多的条件会使它变得复杂,代码也不可读 我只是想知道这个问题是否有更优雅的解决方案?请

我的问题有点难以解释,请耐心听我说, 我为一个应用程序实现了actionBar,我在actionBar上有5-6个菜单项,并使用

onOptionsItemSelected(MenuItem item)
每个菜单项单击都会在公共区域中膨胀特定视图[即膨胀视图彼此重叠,而不是公共容器], 我需要删除该视图,并在单击另一项时放大另一个视图,我使用简单的if比较语句来实现这一点

虽然解决方案很简单,但实现它并检查如此多的条件会使它变得复杂,代码也不可读


我只是想知道这个问题是否有更优雅的解决方案?

请参考上一个膨胀视图:

private View lastInflatedView;
onOptionsItemSelected
方法中,使用此引用隐藏视图并将其设置为下一个选项

if (lastInflatedView != null) {
 lastInflatedView.setVisibility(View.GONE);
}

View newView = //inflate here
lastInflatedView = newView;

在这里,我假设您正在为这个“公共区域”使用片段,如果您没有使用,那么应该开始使用。代码非常简单(顺便说一句,我是从内存中编写的,所以请修复我可能遇到的任何lil错误):


我也在做类似的事情,跟踪最后选择的菜单项,并使用它。这种方法与之类似,但仍然使阅读变得复杂。此外,很抱歉造成误解,但它不完全是一个公共容器,它是一个区域,膨胀的视图彼此重叠。我使用的是片段,但从这个意义上讲,它不是一个公共区域。我编辑了我的问题,对模棱两可的陈述表示抱歉。我不明白。也许如果你发布你的布局。
    onOptionsItemSelected(MenuItem item){
            switch(item.getItemId()){
                case R.id.menu_item_1:
                     // Instantiate the fragment for the item_1
                     Fragment frag = new ... etc.... etc
                     // note I'm using replace, so it will remove whatever was there before.
                    getFragmentManager.beginTransaction().replace(R.id.common_area, frag).commit();
                return true;
                case R.id.menu_item_2:  // repeat for all the menus

                default:
                return super.onOptionsItemSelected(item);
            }
    }