0

属性 String を持つ単純なクラス「User」を作成しましたusername。Android は Java を使用しているため、カスタム クラスを作成でき、それに応じて使用されると想定しています。私の SettingsActivity.java には、次のものがあります。

protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.pref_general);


    SharedPreferences sharedPref = getPreferenceScreen().getSharedPreferences();
    EditTextPreference editTextPref = (EditTextPreference) findPreference("username");
    editTextPref.setSummary(sharedPref.getString("username", "Default"));
    //sharedPref.registerOnSharedPreferenceChangeListener(this);

}

public void onSharedPreferenceChanged(SharedPreferences arg0, String arg1) {
    // Get current summary
    Preference pref = findPreference(arg1);
    if(pref instanceof EditTextPreference){
        EditTextPreference etp = (EditTextPreference) pref;
        pref.setSummary(etp.getText());
        MainMenu.user.setName(etp.getText()); //This is where I try to update my class
    }
}

現時点では、EditTextPreferenceウィジェットの値を変更するたびに、にある public static ユーザー オブジェクトは更新されませんMainMenu。また、フォローアップの質問 - Android はアプリの起動のたびに設定を保存するため、User.username起動時に文字列を更新するにはどうすればよいですか?

4

1 に答える 1

1

コメントonPostCreateを削除します//

sharedPref.registerOnSharedPreferenceChangeListener(this);
于 2013-04-06T04:02:54.817 に答える