0

我在首選項片段中有兩個Listprefence,並且我想在第一個選擇某項時刷新第二個Listpreference值。 列表首選項通過互聯網填充。當選擇第一個Listpreference值時,在首選片段中更改第二個Listpreference值

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> { 
     } 

}

回答

0

最後,我已經得到了答案我自己。

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; 
        } 
       }); 
相關問題