Android工作室问题继续增加计数器

Android studio problem continue increasing counter

我正在尝试制作游戏的一部分,当您按下 fab 图标 TextView 时,数字会增加。它从零开始并增加一。 我试着保存了这个数字,以便下次找到它,启动应用程序并继续增加它。 我是储蓄的新手,我搜索了一下。

我写了一个代码,当我关闭它并重新打开它时,它会保留数字,但是当我按下 fab 图标时,它会从头开始,而不是从我保存的数字开始。 也许我不太了解保存代码的工作原理。 谁能帮我?谢谢!!

我在 MainActivity 中的代码是:

int newAge;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        final TextView age  = (TextView) findViewById(R.id.age);

        FloatingActionButton fab = findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                newAge++;
                age.setText(String.valueOf(newAge));
            }
        });

        //getting preferences
        SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE);
        int savedAge = prefs.getInt("key", 0); //0 is the default value
        age.setText(String.valueOf(savedAge));

    }
    @Override
    protected void onStop(){
        super.onStop();
        SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = prefs.edit();
        editor.putInt("key", newAge);
        editor.commit();
    }

您必须将 savedAge 应用到 newAge,因为一旦您从 SharedPreferences 加载您的年龄,您只需将加载的年龄应用到 TextView,如果您单击按钮,TextView 将显示 1 而不是您保存的值。

int newAge;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    final TextView age  = (TextView) findViewById(R.id.age);

    //getting preferences
    SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE);
    int savedAge = prefs.getInt("key", 0); //0 is the default value
    age.setText(String.valueOf(savedAge));
    newAge = savedAge; //set the age value, to further increase it by a button click

    FloatingActionButton fab = findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            newAge++;
            age.setText(String.valueOf(newAge));
        }
    });



}
@Override
protected void onStop(){
    super.onStop();
    SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = prefs.edit();
    editor.putInt("key", newAge);
    editor.commit();
}

尝试通读 this,以更好地理解 Android 中的 SharedPreferences。