जवाबों:
मुझे इस पर यकीन नहीं है, लेकिन इसे एक शॉट दें।
अपने तार में। xml परिभाषित करें:
<string-array name="array_name">
<item>Array Item One</item>
<item>Array Item Two</item>
<item>Array Item Three</item>
</string-array>
आपके लेआउट में:
<Spinner
android:id="@+id/spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawSelectorOnTop="true"
android:entries="@array/array_name"
/>
मैंने सुना है कि यह हमेशा डिजाइनर पर काम नहीं करता है, लेकिन यह ठीक संकलन करता है।
drawSelectorOnTop
क्योंकि स्पिनर के अलावा कोई अन्य चयनकर्ता नहीं है। समाधान निश्चित रूप से काम करता है, धन्यवाद!
android:entryValues
। ListPreference इसका समर्थन करता है।
Spinner
और AbsSpinner
। एपीआई 19 और 23 दोनों पर, एब्सपिनर कंस्ट्रक्टर उपयोग करता है, R.styleable.AbsSpinner_entries
लेकिन कहीं भी वे उपयोग नहीं करते हैं entryValues
। यह केवल एक संयोग है कि आपका कोड वही कर रहा था जिसकी आपको उम्मीद थी। (या हो सकता है कि कुछ निर्माताओं की रोम में एक कस्टम स्पिनर कार्यान्वयन हो जो वास्तव में संभालता है android:entryValues
?)
इसे अपनी String.xml फ़ाइल में परिभाषित करें और उस सरणी को नाम दें जो आप चाहते हैं, जैसे कि "वज़न"
<string-array name="Weight">
<item>Kg</item>
<item>Gram</item>
<item>Tons</item>
</string-array>
और आपके लेआउट में यह कोड। xml
<Spinner
android:id="@+id/fromspin"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:entries="@array/Weight"
/>
आपकी जावा फ़ाइल में, getActivity
टुकड़े में प्रयोग किया जाता है; यदि आप गतिविधि में उस कोड को लिखते हैं, तो हटा दें getActivity
।
a = (Spinner) findViewById(R.id.fromspin);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this.getActivity(),
R.array.weight, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
a.setAdapter(adapter);
a.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
if (a.getSelectedItem().toString().trim().equals("Kilogram")) {
if (!b.getText().toString().isEmpty()) {
float value1 = Float.parseFloat(b.getText().toString());
float kg = value1;
c.setText(Float.toString(kg));
float gram = value1 * 1000;
d.setText(Float.toString(gram));
float carat = value1 * 5000;
e.setText(Float.toString(carat));
float ton = value1 / 908;
f.setText(Float.toString(ton));
}
}
public void onNothingSelected(AdapterView<?> parent) {
// Another interface callback
}
});
// Inflate the layout for this fragment
return v;
}
पहली टिप्पणी के संबंध में: यदि आप ऐसा करते हैं, तो आपको एक त्रुटि मिलेगी (एंड्रॉइड स्टूडियो में)। यह Android नामस्थान से बाहर होने के संबंध में है। यदि आप इस त्रुटि को ठीक करना नहीं जानते हैं, तो नीचे दिए गए उदाहरण को देखें। उम्मीद है की यह मदद करेगा!
उदाहरण -बाहर:
<string-array name="roomSize">
<item>Small(0-4)</item>
<item>Medium(4-8)</item>
<item>Large(9+)</item>
</string-array>
उदाहरण - बाद:
<string-array android:name="roomSize">
<item>Small(0-4)</item>
<item>Medium(4-8)</item>
<item>Large(9+)</item>
</string-array>
string-array
पास एक name
विशेषता हो, और वह किसी को पहचान न सके android:name
।
android:entryValues="@array/array_name_values"
।