onPreferenceClick メソッドを使用して、設定でリストを更新しようとしています。しかし、リストは更新されません。名前を取得してログに表示しましたが、更新されていないため、onPreferenceClickが実行されます。
public class TransferPreference extends PreferenceFragment {
private TransferHelper transferHelper = new TransferHelper();
private ArrayList<String> names = new ArrayList<String>();
private CharSequence[] charSequence;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preference_transfer);
final MultiSelectListPreference preferenceTeams = (MultiSelectListPreference) findPreference("preferenceTranser_multiSelectListPreference_teams");
preferenceTeams.setPersistent(false);
preferenceTeams.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
names = transferHelper.getServerTeams(getActivity());
int size = names.size();
charSequence = names.toArray(new CharSequence[size]);
preferenceTeams.setEntries(charSequence);
preferenceTeams.setEntryValues(charSequence);
return false;
}
});
}
}
私も onPreferenceClick でこれを試しました:
Editor editor = preference.getEditor();
editor.clear();
names = transferHelper.getServerTeams(getActivity());
for (String name : names) {
editor.putString(name, name);
}
editor.commit();
次のコードを oncreate メソッド (リスナー メソッドではなく) に直接配置すると、名前が表示されます。しかし、名前が言うように、その作成時のみ:)
names = transferHelper.getServerTeams(getActivity());
int size = names.size();
charSequence = names.toArray(new CharSequence[size]);
preferenceTeams.setEntries(charSequence);
preferenceTeams.setEntryValues(charSequence);
誰かアイデアはありますか?私の悪い英語で申し訳ありません。助けてくれてありがとう。
編集:私はまた、この方法で自分のコードを追加しようとしましたが、更新はありません。
@Override
public void onResume()