كيفية تحرير قيمة ListPreference من كود جافا في Android

StackOverflow https://stackoverflow.com/questions/3281187

  •  17-09-2020
  •  | 
  •  

سؤال

أعرف كيفية تغيير قيمة أ CheckBoxPreference, ، لكن لا يمكنني تشغيله من أجل ListPreference.

إليك كيفية إنشاء شاشة التفضيلات الخاصة بي:

  • واحد CheckBox للافتراضي
  • أ ListPreference لتحديد لون آخر غير اللون الافتراضي.

ال ListPreference يتم تعريفه باستخدام المفتاح "titleColor"، كما يلي:

CharSequence[] entries = { "Dark grey", "Light grey", "Light red", "Red" };
CharSequence[] entryValues = { "#4c4c4c", "#b5b5b5", "#ab6a68", "#962622" };
final ListPreference color = (ListPreference) findPreference("titleColor");
color.setEntries(entries);
color.setEntryValues(entryValues);

الآن، عندما أختار لونًا أفعل هذا:

color.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
        public boolean onPreferenceChange(Preference preference, Object newValue) {
            System.out.println("In the onClick method");
            System.out.println("change title color");
            Editor editor2 = defaultColor.getEditor();
            editor2.putBoolean("defaultColor", false);
            editor2.commit();
            return true;
        }

    });

ويبدو أن هذا يعمل، على الرغم من أنني لست متأكدًا من القيام بذلك بشكل صحيح.

لقد كنت أحاول الآن القيام بشيء مماثل عندما أحدد اللون الافتراضي، لكن لا يمكنني جعل القائمة تقوم بإلغاء تحديد كل شيء أو تحديد اللون الذي سيكون اللون الافتراضي.

اي فكرة؟

هل كانت مفيدة؟

المحلول

في حالة CheckBox:

إذا كان لديك اللون الافتراضي CheckBox سيتم إصلاحه باستخدام android:dependency, ، لكن بما أنك لا تملكه، أعتقد أن هذه هي الطريقة الوحيدة.

ذات صلة ب ListPreference, ، مشابه تمامًا:

ListPreference lp = (ListPreference)findPreference("listPreference_key");
lp.setValue("");

يمكنك التحقق من مستندات لمعرفة الطرق المتاحة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top