2013-12-21 47 views
4

我最近從ActionBarSherlock切換到Android Support Library ActionBar,現在我在操作欄中的微調控制器的操作視圖上得到空值。無法使用支持庫獲取ActionBar MenuItem的操作視圖

下面的代碼由docs的建議:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.home_menu, menu); 
    MenuItem spinnerItem = menu.findItem(R.id.menuNavigateType); 
    View view = MenuItemCompat.getActionView(spinnerItem);// !! view is NULL !! 
     ... 
} 

這裏的R.menu.home_menu

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:myapp="http://schemas.android.com/apk/res-auto"> 
    ... 
    <item 
    android:id="@+id/menuNavigateType" 
    myapp:showAsAction="always" 
    myapp:actionViewClass="android.support.v7.widget.Spinner" /> 
    ... 
</menu> 

如何讓我的行動有何看法?

謝謝。

+0

什麼是你的微調xml? – user2511882

+0

微調控件在我上面公佈的xml中被定義爲一個actionViewClass。 – aez

+1

如果有任何微調,U可能會想要在android.support.v7.widget包中查找。沒有Spinner類,所以你需要定義類android.widget.Spinner的正確方法。 – Srneczek

回答

3

不知道,但嘗試以下方法,而不是MenuItemCompat.getActionView(),用途:中

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.home_menu, menu); 
    MenuItem spinnerItem = menu.findItem(R.id.menuNavigateType); 

    View view = spinnerItem.getActionView(); 
    // ... 
    if(view instanceof Spinner) { 
     final Spinner spinner = (Spinner) view; 
     // create your adapter 
     // ... 
     // set your adapter 
     spinner.setAdapter(adapter); 
    } 
} 

也爲您的項目,而不是android.support.v7.widget.Spinner

<item 
    android:id="@+id/menuNavigateType" 
    myapp:showAsAction="always" 
    myapp:actionViewClass="android.widget.Spinner" > 

我看到這個解決方案在這裏:Android ActionBar (ActionBarCompat) Spinner Dropdown list ?
讓我知道它是否對你有幫助。

+0

感謝Filo。我在上面顯示的代碼中遇到了同樣的問題。事實上,[docs](http://developer.android.com/guide/topics/ui/actionbar.html)建議按照我在發佈的問題中顯示的那樣完成。 – aez

+0

是的,我知道這一點。通常你必須像你一樣做,但是用'AppCompat'這樣的方式有些問題。那麼,你對這個例子有同樣的問題?編輯你的問題併發布你的微調的佈局(@ user2511882說)。你有沒有logcat? – Fllo

+0

@Filo,對不起,我錯了,你是對的,你的解決方案工作。我錯過了我的xml中所有項目的「myapp」命名空間。謝謝。 – aez

0

錯誤的原因很可能是缺少包含support.v7庫。 只是不使用myapp。相反:

<item android:id="@+id/menuNavigateType" 
     android:showAsAction="always" 
     android:actionViewClass="android.widget.Spinner"/> 
相關問題