काम नहीं कर रहे हैं। मैं एक list.xml फ़ाइल सूची सूची में उपयोग कर रहा हूं। मैं उपयोगकर्ता को चुनने के लिए 3 विकल्पों की एक सूची दिखाना चाहता हूं। यहाँListPreference: एंट्री और पूर्णांक-सरणी के रूप में स्ट्रिंग-सरणी का उपयोग करें क्योंकि प्रवेश मान
<ListPreference
android:entries="@array/date_alignement"
android:entryValues="@array/date_alignement_values"
android:key="settings_date_alignement"
android:summary="@string/settings_date_alignement_summary"
android:title="@string/settings_date_alignement_title" />
और सरणियों मैं प्रविष्टियों को पॉप्युलेट करने के लिए उपयोग कर रहे हैं:
java.lang.NullPointerException
at android.preference.ListPreference.onDialogClosed(ListPreference.java:264)
at android.preference.DialogPreference.onDismiss(DialogPreference.java:381)
at android.app.Dialog$ListenersHandler.handleMessage(Dialog.java:1228)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
यह ListPreference का कोड है: उपयोगकर्ता सेटिंग्स में से कोई एक विकल्प चुनता है, मैं इस त्रुटि मिलती है :
<string-array name="date_alignement">
<item>"Top"</item>
<item>"Center"</item>
<item>"Bottom"</item>
</string-array>
<integer-array name="date_alignement_values">
<item >0</item>
<item >1</item>
<item >2</item>
</integer-array>
मेरी onSharedPreferenceChanged मैं इस तरह से उन मूल्यों का उपयोग में:
@Override
public void onSharedPreferenceChanged(
SharedPreferences sharedPreferences, String key) {
//Text
mAlignment = mPrefs.getInt(PREF_ALIGNMENT, 1);
switch (mAlignment) {
case 0:
offsetY = mHeight/3.0f;
break;
case 2:
offsetY = mHeight*2.0f/3.0f;
break;
default:
offsetY = mHeight/2.0f;
break;
}
}
यदि मैं एंट्री वैल्यू के लिए एक और स्ट्रिंग-सरणी का उपयोग करता हूं तो यह काम करता है। उदाहरण के लिए अगर मैं मूल्यों और प्रविष्टियों के रूप में एक ही स्ट्रिंग सरणी का उपयोग करें:
android:entries="@array/date_alignement"
android:entryValues="@array/date_alignement"
तो मैं एक छोटे से मेरे कोड को बदलने के लिए है, लेकिन यह काम करता है:
if(mAlignment.equalsIgnoreCase("center")) {
offsetY = mHeight/2.0f;
} else if(mAlignment.equalsIgnoreCase("top")) {
offsetY = mHeight/3.0f;
} else if(mAlignment.equalsIgnoreCase("bottom")) {
offsetY = mHeight*2.0f/3.0f;
}
क्यों मैं एक string- उपयोग नहीं कर सकते सरणी और ListPreference प्रविष्टियों और मानों के लिए एक पूर्णांक-सरणी?
मैं बेवकूफ प्रश्न के लिए sory हूँ, लेकिन आप चर mAlignment किस प्रकार उपयोग करते हैं? और आपको PREF_ALIGNMENT कहां मिला? – Yarik
पहले मामले में mAlignment एक int है। PREF_ALIGNMENT SharePreferences में प्रविष्टि का नाम है, जहां संरेखण वर्तमान मान – Santacrab