Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 共享首选项有问题,保存int变量_Java_Android_Android Sharedpreferences - Fatal编程技术网

Java 共享首选项有问题,保存int变量

Java 共享首选项有问题,保存int变量,java,android,android-sharedpreferences,Java,Android,Android Sharedpreferences,嗨,我在SharedReferences和保存int的数据方面遇到了问题,我已经尝试了所有方法,但我无法解决 我使用两个独立活动的getExtra将数据拉到主活动中,然后将这些变量相加,得到一个总数。我正在努力使它在离开主活动时,所有变量保持不变,并在其他两个活动更改时更新 这是SharedReferences的主要活动 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceSta

嗨,我在SharedReferences和保存int的数据方面遇到了问题,我已经尝试了所有方法,但我无法解决

我使用两个独立活动的getExtra将数据拉到主活动中,然后将这些变量相加,得到一个总数。我正在努力使它在离开主活动时,所有变量保持不变,并在其他两个活动更改时更新

这是SharedReferences的主要活动

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    YearOneActivityButton();
    YearTwoActivityButton();

    SharedPreferences totalScorePref = getSharedPreferences("TotalScorePref", MODE_PRIVATE);
    scoreTotal = totalScorePref.getInt("TotalScoreY1", 0);

    Intent totalGradeValueY1 = getIntent();
    Intent totalGradeValueY2 = getIntent();

    int year2Score = totalGradeValueY2.getIntExtra("totalYearValueY2", 0);
    int year1Score = totalGradeValueY1.getIntExtra("totalYearValueY1", 0);

    scoreTotal = year1Score + year2Score;

    numberScore = (TextView)findViewById(R.id.number_score_txt);
    numberScore.setText(String.valueOf(year1Score));

    numberScore1 = (TextView)findViewById(R.id.number_score_1_txt);
    numberScore1.setText(String.valueOf(year2Score));

    totalGradeTxt = (TextView)findViewById(R.id.total_grade_txt);
    totalGradeTxt.setText(String.valueOf(scoreTotal));

    Log.d("SCORETOTAL", String.valueOf(scoreTotal));

}

@Override
public void onPause(){
    int pTotalScore = scoreTotal;

    SharedPreferences totalScorePref = getSharedPreferences("TotalScorePref", 0);
    SharedPreferences.Editor editor = totalScorePref.edit();
    editor.putInt("TotalScoreY1", pTotalScore);

    editor.commit();

    super.onPause();
}
}

这就是我传递数据的方式

public void SubmitMainActivity() {
    ButtonSubmit = (Button) findViewById(R.id.button_submit);
    ButtonSubmit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            int totalGradeValueY1 = totalAllSpinnerValuesY1;
            Intent year1ScoreIntent = new Intent(YearOneActivity.this, MainActivity.class);
            year1ScoreIntent.putExtra("totalYearValueY1", totalGradeValueY1);
            startActivity(year1ScoreIntent);

        }
    });
}

嗨,请像这样试试

SharedPreferences topic = getSharedPreferences("topicfun", MODE_PRIVATE);
SharedPreferences.Editor topiccom = topic.edit();
topiccom.putInt("topicname",10);
topiccom.commit();

在计算TotalGrade TXT后,您只需添加以下代码即可:

SharedPreferences totalScorePref = getSharedPreferences("TotalScorePref", 
                                                    MODE_PRIVATE);
 SharedPreferences.Editor editor = totalScorePref
                                          .edit()
                                          .putInt("TotalScoreY1",pTotalScore)
                                          .apply();
注意:我使用了apply()而不是commit()


谢谢你的回复,只是试了一下还是不行,感觉不应该这么难。我将“editor=totalscorepref”移到了“scoreTotal=year1Score+year2Score”下面,但仍然得到了相同的结果,没有保存变量,因为文本视图没有保存。