2

いくつかの文字列を共有設定ファイルに保存してから、別のアクティビティでそれらを取得しようとしていますが、機能していないようです。どこが間違っているかについてのガイダンスは大歓迎です。どうもありがとう。

public void save(View view) {
    SavePreferences("name", nameS);
    SavePreferences("current", currentS);
    SavePreferences("goal", goalS);
    SavePreferences("CurrentBmi", cBmiS);
    SavePreferences("goalBmi", gBmiS);
    Toast.makeText(this, "profile Saved", Toast.LENGTH_SHORT).show();
    startActivity(new Intent(this, MainActivity.class));

}

private void SavePreferences(String key, String value) {
    SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putString(key, value);
    editor.commit();
}






 public class Progress extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_progress);
    SharedPreferences sharedPreferences = getPreferences(Context.MODE_PRIVATE);
    String test = sharedPreferences.getString("name", "");
    String test2 = sharedPreferences.getString("current", "");
    TextView testy = (TextView) findViewById(R.id.textView1);
    testy.setText(test);
    TextView testz = (TextView) findViewById(R.id.test2);
    testz.setText(test2);
}
4

1 に答える 1

4

あなたが持っているコードでは、共有設定のアクセスをアクティビティ(コンテキスト)レベルに制限しています。

アクティビティに保存された値 アクティビティを使用しているためMainActivity、アクティビティでは使用できませんProgressgetPreferences(MODE_PRIVATE);

これをに変更

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);

また

SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);

getPreferences:

public SharedPreferences getPreferences (int mode)

このアクティビティにプライベートな設定にアクセスするための SharedPreferences オブジェクトを取得します。

于 2013-08-04T18:51:50.247 に答える