0

コードが機能しない理由がわかりません。Androidデベロッパーガイドに従って、これが機能するはずです。設定ファイルが作成されていないためだと思いますが、どうすればよいかわかりません。誰かが見て、私がすべてを正しく書いたかどうかを確認できますか?

public static final String PREFS_NAME = "TestPrefs";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

public void Save(View v){
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
    final EditText s = (EditText) findViewById(R.id.editText1);
    settings.edit().putString("TBox1", s.getText().toString());
    settings.edit().commit();
}

public void Open(View v){
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
    final EditText s = (EditText) findViewById(R.id.editText1);
    String newS = settings.getString("TBox1", "");
    s.setText(newS);
}
4

1 に答える 1

2

commit()同じエディター上で行う必要があります。行ったように別のオブジェクトにコミットすると、前のオブジェクトputString()が失われます。これは変化を意味します

settings.edit().putString("TBox1", s.getText().toString());
settings.edit().commit();

settings.edit().putString("TBox1", s.getText().toString()).commit();

もちろん、編集するものが複数ある場合は、エディターへの参照を保持できます。

例えば:

SharedPreferences.Editor editor = settings.edit();
editor.putString("key1", "value1");
editor.putString("key2", "value2");
editor.commit();
于 2013-02-19T02:46:45.960 に答える