/ / ActionBar Menü Inflation Fehler von SherlockFragment (ClassCastException) - Android, Android-Actionbar, actionbarsherlock, classcastexception

ActionBar Menü Inflation Fehler von SherlockFragment (ClassCastException) - Android, Android-Actionbar, Actionbarsherlock, classcastexception

Ich versuche die Lösung von dieser Beitrag, um einen Spinner in meiner ActionBar zu haben. Ich habe zuerst die NAVIGATION_MODE_LIST der ActionBar benutzt, aber ich möchte nicht, dass der Spinner benutzt wird, um durch Ansichten zu navigieren (ich werde Tabs dafür haben). Also habe ich 2 xml erstellt:

modus_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>

und versuchte dann, es von meinem Fragment aufzublasen (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);
}

Zur Laufzeit habe ich diesen Fehler erhalten:

java.lang.ClassCastException: com.actionbarsherlock.internal.view.menu.MenuItemWrapper kann nicht in android.widget.Spinner umgewandelt werden

irgendeine Idee ?

Antworten:

7 für die Antwort № 1

Sie müssen anrufen getActionView() auf den resultierenden Artikel von zurückgegeben findItem() um auf diese Ansicht zuzugreifen. Von dort können Sie es manipulieren.

Sie können auch über ein Untermenü mit ausschließlich überprüfbaren Elementen nachdenken.