Android SharedReferences不使用int值

Android SharedReferences不使用int值,android,sharedpreferences,Android,Sharedpreferences,我正在为android编写一个应用程序,我很难用SharedReferences保存int变量。我已经检查了我的代码一千次了,我还没有找到有问题的部分。我有两项活动。在Activity1中,我有一个按钮指向第二个按钮。在Activity2中,我有一个按钮,可以向我的变量添加50个“点”。我将此变量保存在onPause和onStop方法中。之后,我回到活动1,我又得了0分 活动1: private static final String HINT = "Hint"; private static

我正在为android编写一个应用程序,我很难用SharedReferences保存int变量。我已经检查了我的代码一千次了,我还没有找到有问题的部分。我有两项活动。在Activity1中,我有一个按钮指向第二个按钮。在Activity2中,我有一个按钮,可以向我的变量添加50个“点”。我将此变量保存在onPause和onStop方法中。之后,我回到活动1,我又得了0分

活动1:

private static final String HINT = "Hint";
private static final String VALUE = "VALUE";
int hints;

      @Override
      protected void onCreate(Bundle savedInstanceState) {
      this.requestWindowFeature(Window.FEATURE_NO_TITLE);
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_mainketto);      this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,  WindowManager.LayoutParams.FLAG_FULLSCREEN);
    this.setContentView(R.layout.activity_mainketto);

    SharedPreferences sphint = getApplicationContext().getSharedPreferences(HINT, MODE_PRIVATE);
    hints = sphint.getInt(VALUE, 0);

    android.support.v7.app.ActionBar actionbar = getSupportActionBar();
    actionbar.hide();

    Toast.makeText(MainActivity.this, "" + hints,
            Toast.LENGTH_LONG).show();

   Button points = (Button)findViewById(R.id.button3);


   points.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent i = new Intent(MainActivity.this,PointsActivity.class);
            startActivity(i);
        }
    });
 }


  @Override
  protected void onPause() {


         SharedPreferences sphint =     getApplicationContext().getSharedPreferences(HINT, MODE_PRIVATE);
    SharedPreferences.Editor et2 = sphint.edit();
    et2.putInt(VALUE, hints);
    et2.commit();

    super.onPause();
}

@Override
protected void onStop() {

SharedPreferences sphint = getApplicationContext().getSharedPreferences(HINT, MODE_PRIVATE);
    SharedPreferences.Editor et2 = sphint.edit();
    et2.putInt(VALUE, hints);
    et2.commit();
    super.onStop();
}
活动2:

  private static final String HINT = "Hint";
  private static final String VALUE = "VALUE";
  int hints;


   @Override
    protected void onCreate(Bundle savedInstanceState) {
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_pontpiac);
    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    this.setContentView(R.layout.activity_pontpiac);

    android.support.v7.app.ActionBar actionbar = getSupportActionBar();
    actionbar.hide();


    SharedPreferences sphint = getApplicationContext().getSharedPreferences(HINT, MODE_PRIVATE);
    hints = sphint.getInt(VALUE, 0);


    Toast.makeText(Pontpiac.this, ""+hints,
            Toast.LENGTH_LONG).show();

   Button btn = (Button)findViewById(R.id.tesztfos);

    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            hints = hints + 50;
            Toast.makeText(Pontpiac.this, ""+hints,
                    Toast.LENGTH_LONG).show();
        }
    });


  @Override
  protected void onPause() {

    SharedPreferences sphint = getApplicationContext().getSharedPreferences(HINT, MODE_PRIVATE);
    SharedPreferences.Editor et2 = sphint.edit();
    et2.putInt(VALUE, hints);
    et2.commit();

    super.onPause();
}

   @Override
   protected void onStop() {
 SharedPreferences sphint = getApplicationContext().getSharedPreferences(HINT, MODE_PRIVATE);
    SharedPreferences.Editor et2 = sphint.edit();
    et2.putInt(VALUE, hints);
    et2.commit();

    super.onStop();
}

如果有人有一个如何使其工作的想法,请回应

您需要在第一个活动的
onResume
中再次获取首选项

您需要在第一个活动的
onResume
中再次获取首选项

您需要在第一个活动的
onResume
中再次获取首选项activity

activity.onCreate()
通常仅在首次创建
活动时调用一次。它就像一个虚拟构造器。从Activity2导航回Activity1时,不会再次调用Activity1的
onCreate()
。正如@tyczj在回答中所说的,您需要重写
onResume()
,然后再次获取该值。例如:

@Override
protected void onResume() {
    SharedPreferences sphint = getApplicationContext().getSharedPreferences(HINT, MODE_PRIVATE);
    hints = sphint.getInt(VALUE, 0);
}
顺便说一句,我不知道为什么要使用
getApplicationContext().getSharedReferences(…)
。您的
活动
是一个
上下文
。您只需调用
getSharedReferences(…)
,它就会工作。

Activity.onCreate()
通常仅在首次创建
活动时调用一次。它就像一个虚拟构造器。从Activity2导航回Activity1时,不会再次调用Activity1的
onCreate()
。正如@tyczj在回答中所说的,您需要重写
onResume()
,然后再次获取该值。例如:

@Override
protected void onResume() {
    SharedPreferences sphint = getApplicationContext().getSharedPreferences(HINT, MODE_PRIVATE);
    hints = sphint.getInt(VALUE, 0);
}
顺便说一句,我不知道为什么要使用
getApplicationContext().getSharedReferences(…)
。您的
活动
是一个
上下文
。您只需调用
getSharedReferences(…)
,它就会工作。

Activity.onCreate()
通常仅在首次创建
活动时调用一次。它就像一个虚拟构造器。从Activity2导航回Activity1时,不会再次调用Activity1的
onCreate()
。正如@tyczj在回答中所说的,您需要重写
onResume()
,然后再次获取该值。例如:

@Override
protected void onResume() {
    SharedPreferences sphint = getApplicationContext().getSharedPreferences(HINT, MODE_PRIVATE);
    hints = sphint.getInt(VALUE, 0);
}
顺便说一句,我不知道为什么要使用
getApplicationContext().getSharedReferences(…)
。您的
活动
是一个
上下文
。您只需调用
getSharedReferences(…)
,它就会工作。

Activity.onCreate()
通常仅在首次创建
活动时调用一次。它就像一个虚拟构造器。从Activity2导航回Activity1时,不会再次调用Activity1的
onCreate()
。正如@tyczj在回答中所说的,您需要重写
onResume()
,然后再次获取该值。例如:

@Override
protected void onResume() {
    SharedPreferences sphint = getApplicationContext().getSharedPreferences(HINT, MODE_PRIVATE);
    hints = sphint.getInt(VALUE, 0);
}
顺便说一句,我不知道为什么要使用
getApplicationContext().getSharedReferences(…)
。您的
活动
是一个
上下文
。您只需调用
getSharedReferences(…)
即可使用。

您可以使用my library:是一个“超级”SharedReference,允许您保存int、String和boolean,如下所示:

KeySaver.saveShare(this, "your-key", 1); //or any int
要获取值,请执行以下操作:

KeySaver.getIntSavedShare(this, "your-key");
您可以使用my library:是一个“超级”SharedReference,允许您保存int、String和boolean,如下所示:

KeySaver.saveShare(this, "your-key", 1); //or any int
要获取值,请执行以下操作:

KeySaver.getIntSavedShare(this, "your-key");
您可以使用my library:是一个“超级”SharedReference,允许您保存int、String和boolean,如下所示:

KeySaver.saveShare(this, "your-key", 1); //or any int
要获取值,请执行以下操作:

KeySaver.getIntSavedShare(this, "your-key");
您可以使用my library:是一个“超级”SharedReference,允许您保存int、String和boolean,如下所示:

KeySaver.saveShare(this, "your-key", 1); //or any int
要获取值,请执行以下操作:

KeySaver.getIntSavedShare(this, "your-key");