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