SherlockFragment的ActionBar菜单通胀错误(ClassCastException)

elg*_*gui 2 android classcastexception actionbarsherlock android-actionbar

我正在尝试使用这篇文章的解决方案,以便在我的ActionBar中有一个Spinner.我第一次使用ActionBar的NAVIGATION_MODE_LIST,但我不希望使用微调器来浏览槽视图(我将有标签).所以我创建了2 xml:

mode_spinner.xml

<Spinner xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

然后,试图从我的片段中膨胀它(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);
}
Run Code Online (Sandbox Code Playgroud)

在运行时,我收到此错误:

java.lang.ClassCastException:com.actionbarsherlock.internal.view.menu.MenuItemWrapper无法强制转换为android.widget.Spinner

任何的想法 ?

Jak*_*ton 7

您需要调用getActionView()返回的结果项findItem()来访问该视图.从那里你可以操纵它.

您可能还想考虑使用仅具有可检查项目的子菜单.