首页 文章

偏好不会改变我的主要活动

提问于
浏览
0

在我的MainActivity中,我有一个textView . 在那个textView中有一个我在SharedPreferences中保留的数字 . 每隔几分钟使用报警管理器更改SharedPreferences,但是我的MainActivity中的SharedPreferences不会改变,任何人都知道为什么?

这是MainActivity中代码的一部分

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
    int ReleaseDate = preferences.getInt("com.fisher.freedom.ReleaseDate", 0);
    TextView edit = (TextView) findViewById(R.id.DaysLeft);

    Toast.makeText(MainActivity.this, "" + preferences.getInt("com.fisher.freedom.ReleaseDate", 0), Toast.LENGTH_SHORT).show();
    edit.setText("" + ReleaseDate);

这是AlarmReceiver中的代码

public static final String ReleaseDate_Key = "com.fisher.freedom.ReleaseDate";

    @Override
    public void onReceive(Context context, Intent intent) {
        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
        int ReleaseDate = preferences.getInt(ReleaseDate_Key, 0);
        SharedPreferences.Editor editor = preferences.edit();
        editor.putInt(ReleaseDate_Key, --ReleaseDate);
        editor.apply();

1 回答

  • 0

    要获取int的值,请使用:

    SharedPreferences sharedPreferences = getSharedPreferences(getApplicationContext().getPackageName(),0);
    int ReleaseDate = sharedPreferences.getInt("ReleaseDate",0);
    

    为了保存它使用这个:

    SharedPreferences prefs = getSharedPreferences(getApplicationContext().getPackageName(), Context.MODE_PRIVATE);
    prefs.edit().putInt("ReleaseDate", ReleaseDate).commit();
    

    有了这个,你忘了在静态变量上写你的包名,它对我有用,所以它适合你 .

相关问题