【问题标题】:Change second Listpreference values in preference fragment when first Listpreference value selected选择第一个 Listpreference 值时更改首选项片段中的第二个 Listpreference 值
【发布时间】:2015-03-02 19:25:10
【问题描述】:

我在首选项片段中有两个 Listpreference,我想在第一次选择某些内容时刷新第二个 Listpreference 值。 Listpreferences 是通过 Internet 填写的。

public class array extends PreferenceFragment {
public static String apref;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.preferences);

    final ListPreference array1Preference = (ListPreference)findPreference("array1");
    setArray1PreferenceData(array1Preference);
    array1Preference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
                @Override
                public boolean onPreferenceClick(Preference preference) {
                    setArray1PreferenceData(array1Preference);
                    return true;}});

    final ListPreference array2Preference = (ListPreference)FindPreference("array2");
    setArray2PreferenceData(array2Preference);
    array2Preference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
                @Override
                public boolean onPreferenceClick(Preference preference) {
                    setArray2PreferenceData(array2Preference);
                    return true;}});
}

public void setArray1PreferenceData(ListPreference array1Preference) {
    new LoadArray1().execute();
}

public void setArray2PreferenceData(ListPreference array2Preference) {
    String CPref = "array1";
    SharedPreferences prefs = this.getActivity().getSharedPreferences(
            "com.asdd.ck_preferences", Activity.MODE_PRIVATE);
    apref = prefs.getString(CPref, "");

    if (apref != "0") {
        new LoadArray2().execute();
    } else {
        new LoadArray1().execute();
    }
}

public class LoadArray1 extends AsyncTask<String, String, String> { 
        }
public class LoadArray2 extends AsyncTask<String, String, String> {
        }

}

【问题讨论】:

    标签: android android-fragments listpreference preferencefragment onpreferenceclicklistener


    【解决方案1】:

    终于我自己得到了答案。

    array1Preference
                    .setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
    
                        @Override
                        public boolean onPreferenceChange(Preference preference,
                                Object newValue) {
    
                            apref = (String) newValue;//Sets the new value for second list loader (LoadArray2)
                            PreferenceManager.getDefaultSharedPreferences(getActivity()).edit().putString(key, "0").commit();//Clear in the preference file the 2nd listpreference selection data.
                            setArray2PreferenceData(array2Preference);//Reload data from server
                            array2Preference.setValue("0");//When in 1st selected something clear in 2nd the selection.
                            return true;
                        }
                    });
    

    【讨论】:

      猜你喜欢
      • 2021-01-02
      • 1970-01-01
      • 1970-01-01
      • 2015-10-15
      • 2023-02-23
      • 1970-01-01
      • 2017-07-28
      • 2018-04-13
      • 2013-03-21
      相关资源
      最近更新 更多