2013-02-20 37 views
0

所以我有這個代碼..我使用黑客(爲缺乏更好的詞)強制溢出菜單。我正在使用SubMenu製作一個溢出項目。硬件選項按鈕觸發SearchView而不是溢出菜單

這裏是我的代碼:

@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    main = menu; 

    getSupportActionBar() 
      .setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

    // Create the search view 
    SearchView searchView = new SearchView(getSupportActionBar() 
      .getThemedContext()); 
    searchView.setQueryHint("Search outlets..."); 
    searchView.setOnQueryTextListener(new OnQueryTextListener() 
    { 

     @Override 
     public boolean onQueryTextSubmit(String query) 
     { 
      Toast.makeText(con, "Search: " + query, 0).show(); 
      return false; 
     } 

     @Override 
     public boolean onQueryTextChange(String newText) 
     { 
      // TODO Auto-generated method stub 
      return false; 
     } 
    }); 

    main.add("Search") 
      .setIcon(R.drawable.abs__ic_search) 
      .setActionView(searchView) 
      .setShowAsAction(
        MenuItem.SHOW_AS_ACTION_IF_ROOM 
          | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW); 

    sub = main.addSubMenu(""); 
    sub.add("All Outlets"); 
    sub.add("Categories"); 

    MenuItem subItem = sub.getItem(); 
    subItem.setIcon(R.drawable.abs__ic_menu_moreoverflow_normal_holo_dark); 
    subItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 

    return super.onCreateOptionsMenu(main); 
} 

@Override 
public boolean onKeyUp(int keyCode, KeyEvent event) 
{ 
    if (keyCode == KeyEvent.KEYCODE_MENU) 
    { 
     main.performIdentifierAction(main.getItem(1).getItemId(), 0); 
     return true; 
    } 
    return super.onKeyUp(keyCode, event); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) 
{ 
    if (item.getTitle().equals("All Outlets")) 
    { 
     Intent alloutlets = new Intent(con, AllOutlets.class); 
     startActivity(alloutlets); 
     return true; 
    } 

    else if (item.getItemId() == android.R.id.home) 
    { 
     finish(); 
     return true; 
    } 

    else 
    { 
     return false; 
    } 
} 

現在,每當我按下4.0.4設備上的硬件選項鍵,它擴展了搜索查看,而不是告訴我擴大溢出。

另外,有沒有一個正確的方法來做到這一點?沒有使用SubMenu和東西。

回答

1

我會嘗試創建XML佈局的項目,然後在你的onkeyup方法我會做這樣的:

menu.performIdentifierAction(menu.findItem(R.id.overflow_menu), 0); 

哪裏overflow_menu是我的項目的ID,它包含的子菜單,如下所示:

<item 
    android:id="@+id/overflow_menu" 
    android:icon="?actionbar_icon_overflow" 
    android:showAsAction="always"> 
     <menu> 
      <!-- subitems --> 
     </menu> 
</item> 
相關問題