android - Casting a Menu Item in XML to a Spinner (Actionbar appcompat) -
i'm having trouble casting menu item in xml spinner (actionbar compat) . i've tried couple of options, these spinner menuitem not initialized findviewbyid or adding spinner actionbar (not navigation , spinner = (spinner)item.getactionview(); keeps coming null. setting new spinner works though, that's not relevant problem.
code:
@override public boolean oncreateoptionsmenu(menu menu) { menuinflater inflater = getmenuinflater(); inflater.inflate(r.menu.main, menu); actionbar.setnavigationmode(actionbar.navigation_mode_list); //spinner = (spinner) menu.finditem(r.id.category_spinner).getactionview(); //spinner = new spinner(this); menuitem item = menu.finditem(r.id.category_spinner); spinner = (spinner)item.getactionview(); spinneradapter mspinneradapter = arrayadapter.createfromresource(this, r.array.operating_systems,android.r.layout.simple_spinner_dropdown_item); spinner.setadapter(mspinneradapter); actionbar.setlistnavigationcallbacks(mspinneradapter, monnavigationlistener); monnavigationlistener = new actionbar.onnavigationlistener() { string[] strings = getresources().getstringarray(r.array.operating_systems); @override public boolean onnavigationitemselected(int position, long itemid) { listcontentfragment newfragment = new listcontentfragment(); fragmenttransaction ft = getsupportfragmentmanager().begintransaction(); ft.replace(r.id.fragment_container, newfragment, strings[position]); ft.commit(); return true; } }; return super.oncreateoptionsmenu(menu); }
i tried
menuitem item = menu.finditem(r.id.category_spinner_item); spinner = (spinner) menuitemcompat.getactionview(item);
http://developer.android.com/guide/topics/ui/actionbar.html#actionview comes null.
menu/main.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:yourapp="http://schemas.android.com/apk/res-auto" > <item android:id="@+id/category_spinner" android:showasaction="ifroom" android:actionlayout="@layout/action_sort" /> <item android:id="@+id/action_share" android:icon="@drawable/ic_action_share" android:title="@string/action_share" yourapp:showasaction="ifroom" /> <item android:id="@+id/action_settings" android:icon="@drawable/ic_action_overflow" android:title="@string/action_settings" yourapp:showasaction="always"/> </menu>
layout/action_short.xml
<spinner xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:entries="@array/operating_systems" />
getactionview() of menuitem return null answers all:
getactionview() works if there's custom actionview setactionview.
why though, have no idea. why dont in example here http://developer.android.com/guide/topics/ui/actionbar.html#actionview , knows.
Comments
Post a Comment