2

我試圖使用this post的解決方案,以便在我的ActionBar中擁有一個Spinner。 我第一次使用ActionBar的NAVIGATION_MODE_LIST,但我不希望使用微調器來瀏覽槽視圖(我將有選項卡)。 所以我創建2 XML:來自SherlockFragment的ActionBar菜單通貨膨脹錯誤(ClassCastException)

mode_spinner.xml

<Spinner xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" /> 

options.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 
<item 
    android:id="@+id/menu_mode" 
    android:actionLayout="@layout/mode_spinner" 
    android:showAsAction="ifRoom"/> 
</menu> 

,然後試圖從我的片段它充氣(SherlockFragment)

import com.actionbarsherlock.view.Menu; 
import com.actionbarsherlock.view.MenuInflater; 
import com.actionbarsherlock.view.MenuItem; 
@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    inflater.inflate(R.menu.options, menu); 
    Spinner spinner = (Spinner) menu.findItem(R.id.menu_mode); 
    spinner.setAdapter(mSpinnerAdapter); 
    super.onCreateOptionsMenu(menu, inflater); 
} 

在運行時,我得到這個錯誤:

java.lang.ClassCastException:com.actionbarsherlock.internal.view.menu.MenuItemWrapper不能轉換到android.widget.Spinner

什麼想法?

回答

7

你需要調用getActionView()findItem()返回訪問考慮到產生的項目。從那裏你可以操縱它。

你也可以簡單地使用一個子菜單,完全可檢查的項目來考慮。

+0

非常感謝你! 這裏是校正行: '微調微調=(微調)menu.findItem(R.id.menu_mode).getActionView();' – elgui