我正在尝试使用this post的解决方案,以便在我的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" />
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
任何想法?
答案 0 :(得分:7)
您需要在getActionView()
返回的结果项上调用findItem()
来访问该视图。从那里你可以操纵它。
您可能还想考虑只使用带有可检查项目的子菜单。