我在两个活动之间遇到SharedPreferences问题

时间:2012-12-06 13:09:51

标签: android android-activity sharedpreferences

我有一项活动可以使用 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();
}

这是第二个活动

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

我还有另一个活动,我想使用我在第一个活动中保存的数据, 我搜索并尝试了一些代码,但没有任何效果! 那么如何将第一个活动中保存的数据用于第二个活动

1 个答案:

答案 0 :(得分:1)

在第二个活动中,您应该获得默认的共享首选项(保存时使用的首选项)..

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

AS

 PreferenceManager.getDefaultSharedPreferences(this);

将提供对整个应用程序包的全局首选项文件的访问权限;任何活动都可以访问首选项(内部,保存首选项的xml文件将命名为your.application.package_preferences.xml)。

getPreferences(Context.MODE_PRIVATE);

仅为contextInstance类提供首选项:只有上下文类的实例才能访问这些首选项(表示您的包仍然是your.application.package而您在your.application.package.SecondActivity,而首选项文件是{ {1}})。