2012-10-15 25 views
0

的问题,我有菜单项的onclick事件之间的切换是有点难以解释,所以请多多包涵, 我已经实现动作条的应用程序,事情是我上有5-6菜单项在ActionBar和处理使用点击事件如何处理动作条

onOptionsItemSelected(MenuItem item) 

什么情况是每个菜单项的点击膨胀在一个公共区域中的特定视图[即膨胀的观点相互重叠,而不是一个公共容器], 我需要删除该视图和膨胀另一个如果点击另一个项目,以及i达到此使用简单如果比较语句。

虽然解决方法很简单,实现它,并检查这么多的条件使得复杂的代码不可读。

我只是想知道,如果存在这个问题更好的解决方案?

回答

0

保持到最后一个充气视图的引用:在onOptionsItemSelected方法

private View lastInflatedView; 

隐藏与此参考的视图,并将其设置到下充气。

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

View newView = //inflate here 
lastInflatedView = newView; 
+0

我在做类似的事情,通过跟踪最后选择的菜单项,并使用它。这种方法很相似,但仍然使阅读变得复杂。误导性,但它不完全是一个普通的容器。此外对不起,这是一个面积wgere膨胀的意见重叠我使用的片段彼此 – Ajay

0

我假设你在这里使用这个'公共区域'的片段,如果你不使用你应该开始使用。和代码是非常简单的(PS我从记忆写的,所以修复任何错误律我可能有。):

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); 
      } 
    } 
+0

,但事情是它不是在这个意义上的公共区域,我已经编辑我的问题,对不起对于模棱两可的声明 – Ajay

+0

遗憾。我没有关注。也许如果你发布你的布局。 – Budius