UI設定の概要フィールドを設定値に設定する 質問する

UI設定の概要フィールドを設定値に設定する 質問する

Android は初めてですが、ユーザーが設定を変更したときに、UI 設定の概要フィールドをユーザーが入力した値に更新するコードがあります。ただし、設定アクティビティが作成されたときに、概要フィールドを対応する設定の値に設定したいと思います。アドバイスをお願いします。よろしくお願いします。

public class MyPreferenceActivity extends PreferenceActivity implements
        OnSharedPreferenceChangeListener {

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.preference);
        SharedPreferences sp = getPreferenceScreen().getSharedPreferences();
        sp.registerOnSharedPreferenceChangeListener(this);
    }

    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
            String key) {
        Preference pref = findPreference(key);
        if (pref instanceof EditTextPreference) {
            EditTextPreference etp = (EditTextPreference) pref;
            pref.setSummary(etp.getText());
        }
    }
}

ベストアンサー1

私も初心者なので、最高のコードではないかもしれませんが、これは私がやっていることと似ています。おそらく、リスナーを onResume に登録し、onCreate ではなく onPause で登録解除したいでしょう。これがお役に立てば幸いです。

主に、設定と設定値を取得し、概要を設定する必要があります。

public class MyPreferenceActivity extends PreferenceActivity implements
        OnSharedPreferenceChangeListener {

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.preference);
        SharedPreferences sp = getPreferenceScreen().getSharedPreferences();
        EditTextPreference editTextPref = (EditTextPreference) findPreference("thePrefKey");
        editTextPref
                .setSummary(sp.getString("thePrefKey", "Some Default Text"));
    }

    protected void onResume() {
        super.onResume();
        getPreferenceScreen().getSharedPreferences()
                .registerOnSharedPreferenceChangeListener(this);
    }

    protected void onPause() {
        super.onPause();
        getPreferenceScreen().getSharedPreferences()
                .unregisterOnSharedPreferenceChangeListener(this);
    }

    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
            String key) {
        Preference pref = findPreference(key);
        if (pref instanceof EditTextPreference) {
            EditTextPreference etp = (EditTextPreference) pref;
            pref.setSummary(etp.getText());
        }
    }
}

おすすめ記事