2015-12-10 81 views
0

我試圖獲得MenuItemViewMenuItemCompat.getActionView(menuItem)返回null

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    View miView = MenuItemCompat.getActionView(item); 

    if (miView == null) { 
     Log.e(X, "mView is null"); 
    } 
} 

但是每次都是miView is null

這裏是我的onCreateOptionsMenu

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    menu.add(0, 0, 0, R.string.Foo); 
    return true; 
} 

我知道MenuItemCompat返回null,因爲創建Menu不是從support庫,所以MenuItem不能被MenuItemCompat類進行處理,是不是?

1)我正在尋找一些方法,如onCreateOptionsMenuCompat,有沒有像這樣的方法? 2)我如何從MenuItemCompat類獲得ActionView?

和我在做什麼錯?

PS:我項目的的minSdkVersion是9

回答

1

要想從一個菜單項目的ActionView,你需要在它第一次設置的ActionView。普通菜單項不包含ActionViews。當您需要在菜單中做一些額外的操作(正常圖標和/或文本之外)時,使用ActionViews。

你爲什麼試圖從菜單項獲取一個視圖?你想用你的菜單項目做什麼?

+0

我想在'MenuItem'點擊創建一個'ContextMenu',所以我需要'View'。是否有任何其他選項來獲得'MenuItem'的'View'? – theapache64

+0

您可以通過調用Activity上的'openContextMenu()'來手動顯示上下文菜單。你可以在你的'onOptionsItemSelected()'方法中調用該方法。你仍然需要實現其他的上下文菜單回調(比如'onCreateContextMenu') – cstew