2012-10-15 24 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