मैं के समाधान का उपयोग करने की कोशिश कर रहा हूँ ये पदमेरे ActionBar में स्पिनर रखने के लिए। मैं पहली बार 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>
और फिर, इसे मेरे टुकड़े (शेरलॉकफ्रैगमेंट) से भड़काने की कोशिश की
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 पर नहीं डाला जा सकता
कोई उपाय ?
उत्तर:
उत्तर № 1 के लिए 7आपको कॉल करने की ज़रूरत है getActionView()
परिणामी आइटम से वापस आ गया findItem()
उस दृश्य तक पहुँचने के लिए। वहां से आप इसमें फेरबदल कर सकते हैं।
आप केवल विशेष रूप से जाँच योग्य वस्तुओं के साथ एक उप-मेनू का उपयोग करने पर विचार करना चाह सकते हैं।