2016-02-21 57 views
0

我有一個搜索功能的食譜,我想包括搜索過濾器的不同過敏或飲食。我已經將此作爲頁面上的操作欄上的一個選項。然而,每當我點擊一個複選框,菜單消失,我不得不再次點擊橙色圖標彈出菜單,然後點擊另一個選項。有沒有一種方法可以讓菜單保持打開狀態,以便我可以檢查多個過濾器,而不必每次都關閉菜單?使ActionBar上的菜單保持打開當我點擊一個項目

這是我的過濾器部分的圖片。

enter image description here

checkable_test.xml

<item android:id="@+id/action" 
    android:title="@string/action_example" 
    android:icon="@drawable/filter" 
    app:showAsAction="withText|ifRoom"> 

<menu> 

<item android:title="Allergies"> 
    <menu> 

     <group android:id="@+id/allergies" 
      android:checkableBehavior="all"> 

      <item android:id="@+id/no_peanut" 
       android:icon="@drawable/no_peanut" 
       android:title="No Peanuts" 
       android:checkable="true"/> 
      <item android:id="@+id/no_sesame" 
       android:icon="@drawable/no_sesame" 
       android:title="No Sesame" 
       android:checkable="true"/> 
      <item android:id="@+id/no_dairy" 
       android:title="No Dairy" 
       android:icon="@drawable/no_milk" 
       android:checkable="true"/> 
      <item android:id="@+id/gluten_free" 
       android:icon="@drawable/gluten_free" 
       android:title="No Gluten" 
       android:checkable="true"/> 
      <item android:id="@+id/no_egg" 
       android:icon="@drawable/no_eggs" 
       android:title="No Egg" 
       android:checkable="true"/> 
      <item android:id="@+id/no_soy" 
       android:icon="@drawable/no_soy" 
       android:title="No Soy" 
       android:checkable="true"/> 
      <item android:id="@+id/no_seafood" 
       android:icon="@drawable/no_crust" 
       android:title="No Seafood" 
       android:checkable="true"/> 
     </group> 
    </menu> 
</item> 

Search.java

@Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     menu.clear(); 
     super.onCreateOptionsMenu(menu, inflater); 
     inflater.inflate(R.menu.checkable_test, menu); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case R.id.no_peanut: 
       if (item.isChecked()) item.setChecked(false); 
       else item.setChecked(true); 
       return true; 
      case R.id.no_dairy: 
       if (item.isChecked()) item.setChecked(false); 
       else item.setChecked(true); 
       return true; 
      case R.id.no_egg: 
       if (item.isChecked()) item.setChecked(false); 
       else item.setChecked(true); 
       return true; 
      case R.id.no_seafood: 
       if (item.isChecked()) item.setChecked(false); 
       else item.setChecked(true); 
       return true; 
      case R.id.no_sesame: 
       if (item.isChecked()) item.setChecked(false); 
       else item.setChecked(true); 
       return true; 
      case R.id.no_soy: 
       if (item.isChecked()) item.setChecked(false); 
       else item.setChecked(true); 
       return true; 
      case R.id.gluten_free: 
       if (item.isChecked()) item.setChecked(false); 
       else item.setChecked(true); 
       return true; 
      default: 
       return super.onOptionsItemSelected(item); 
     } 
    } 

有什麼解決方法嗎?

+0

嘿Theman,你有沒有找到一個答案? –

回答

0

你可以嘗試所有的

return true; 

改變成

return false; 
+0

嘗試過,它不會改變任何東西,菜單仍然消失 – Theman

相關問題