2013-02-20 101 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>