/ / ActionBar menu inflácia chyba od SherlockFragment (ClassCastException) - android, android-actionbar, actionbarsherlock, classcastexception

ActionBar menu inflácia chyba od SherlockFragment (ClassCastException) - android, android-actionbar, actionbarsherlock, classcastexception

Snažím sa použiť riešenie tento príspevok, aby som mal na svojom ActionBar Spinner. Najprv som použil NAVIGATION_MODE_LIST ActionBar, ale nechcem, aby sa točivý stroj používal na navigáciu cez zobrazenia (budem mať karty na to). Takže som vytvoril 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>

a potom sa ho snažil nafúknuť z môjho fragmentu (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);
}

pri behu, mám túto chybu:

java.lang.ClassCastException: com.actionbarsherlock.internal.view.menu.MenuItemWrapper nemôže byť odovzdaný do android.widget.Spinner

nejaká myšlienka?

odpovede:

7 pre odpoveď č. 1

Musíte zavolať getActionView() na výslednú položku vrátenú z findItem() prístup k tomuto zobrazeniu. Odtiaľ môžete manipulovať.

Možno budete tiež chcieť zvážiť jednoduché použitie podmenu s výlučne kontrolovateľnými položkami.