You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SharedPreferences计数重置问题求助:Activity重启后计数器归零

问题分析与修复方案

嘿,我一眼就看到问题所在啦!你的核心问题是每次重启Activity时,counter都会被重新初始化为0,而且没有从SharedPreferences里加载之前保存的计数,导致新的点击会覆盖掉之前存储的数值。

为什么会出现这个问题?

你定义的int counter = 0;会在每次Activity创建时执行——也就是说,当你关闭再打开Activity,这个变量就会被重置为0。点击按钮时,你用这个新的0去递增,然后写入SharedPreferences,直接覆盖了之前保存的旧值。而Activity在前台时,counter一直保存在内存里,所以功能正常,一旦重启就“失忆”了。

修复步骤

我们需要做两个关键调整:

  • 在Activity初始化时,先从SharedPreferences读取之前保存的计数,用来初始化counter
  • 优化代码,避免重复获取SharedPreferences实例(没必要每次点击都重新获取)

修改后的完整代码示例

public class YourActivity extends AppCompatActivity {
    private int counter;
    private SharedPreferences shareOpenClose;
    private Button mBtn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.your_activity_layout); // 替换成你的布局ID

        // 1. 提前获取SharedPreferences实例
        shareOpenClose = getSharedPreferences("Counter", Context.MODE_PRIVATE);
        // 2. 从SharedPreferences读取之前的计数,没有的话默认0
        counter = shareOpenClose.getInt("count", 0);

        mBtn = findViewById(R.id.your_button_id); // 替换成你的按钮ID
        mBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                counter++;
                // 写入最新计数到SharedPreferences
                SharedPreferences.Editor editor = shareOpenClose.edit();
                editor.putInt("count", counter);
                editor.apply();

                // 直接用counter判断即可,无需再次读取SharedPreferences
                if (counter > 3) {
                    Toast.makeText(YourActivity.this, "success!", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
}

额外优化说明

  • 不用每次点击都重复调用getSharedPreferences(),提前在onCreate里获取一次即可,减少不必要的资源消耗
  • 写完SharedPreferences后,不需要再重新读取一次——因为counter已经是最新的数值了,直接用它判断逻辑就行,避免多余的IO操作

内容的提问来源于stack exchange,提问作者ClassA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:09:26