【问题标题】:Android studio problem continue increasing counterAndroid studio 问题继续增加计数器
【发布时间】:2020-05-04 17:44:57
【问题描述】:

我正在尝试制作游戏的一部分,当您按下 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();
    }

【问题讨论】:

    标签: android save counter continue


    【解决方案1】:

    你必须将savedAge 应用到newAge,因为一旦你从SharedPreferences 加载你的年龄,你只会将laoded 年龄应用到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。

    【讨论】:

    • 非常感谢!!这对我帮助很大!我将阅读它,希望能更好地了解如何保存。我能再问你点什么吗?有什么方法可以自动保存下次重新打开的所有数据?你能给我推荐一些教程吗?提前谢谢你!
    • 很高兴能为您提供帮助 :) 对于您的问题,all the data 是什么意思?
    • 我想会有一种方法,可以保存用户在游戏过程中更改的所有数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多