0

以下のように、 sharedpreferencesを使用して一部のデータを保存するアクティビティがあります。

public void birthDateSharedPreferences(int calculatedBirthYear, int calculatedBirthMonth, int calculatedBirthDay)
    {
      SharedPreferences birthDatePreferences = PreferenceManager.getDefaultSharedPreferences(this);
      SharedPreferences.Editor editor = birthDatePreferences.edit();
      editor.putInt("birthChosenDay",calculatedBirthDay);
      editor.putInt("birthChosenMonth",calculatedBirthMonth);
      editor.putInt("birthChosenYear",calculatedBirthYear);
      editor.commit();
      Toast.makeText(birthDate.this,"The date was saved", Toast.LENGTH_LONG).show();
      Intent saved = new Intent(birthDate.this,MenuActivity.class);
      startActivity(saved);
      finish();
}

2つ目のアクティビティはこちら

SharedPreferences prefs = getPreferences(MODE_PRIVATE); 
                   int birthChosenDay = prefs.getInt("birthChosenDay", MODE_APPEND);

最初のアクティビティで保存したデータを使用したい別のアクティビティがあり、いくつかのコードを検索して試しましたが、何も機能しませんでした。では、最初のアクティビティで保存されたデータを 2 番目のアクティビティに使用するにはどうすればよいでしょうか?

4

1 に答える 1

1

2番目のアクティビティでは、デフォルトの共有設定(保存中に使用される設定)を取得する必要があります。

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
int birthChosenDay = prefs.getInt("birthChosenDay", MODE_APPEND);

なので:

 PreferenceManager.getDefaultSharedPreferences(this);

アプリケーションパッケージ全体に対してグローバルな設定ファイルへのアクセスを提供します。すべてのアクティビティが設定にアクセスできます(内部的には、設定を保持するxmlファイルに名前が付けられますyour.application.package_preferences.xml)。

getPreferences(Context.MODE_PRIVATE);

contextInstanceクラスのプリファレンスのみを提供します。コンテキストのクラスのインスタンスのみがこれらのプリファレンスにアクセスできます(パッケージがまだyour.application.packageありyour.application.package.SecondActivity、内部的にはプリファレンスファイルがありますSecondActivity.xml)。

于 2012-12-06T13:12:55.787 に答える