【问题标题】:I can't save integer我无法保存整数
【发布时间】:2019-10-14 19:39:15
【问题描述】:

我想将计数器保存在我的应用程序内存中并显示它。

我试过sharedpreferences 还是不行。

public class MainActivity extends AppCompatActivity {
 SharedPreferences sharedPreferences;
    int counter = 0;
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);

 button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {                    
               counter = counter + 1;
               tvCounter.setText(String.valueOf(counter));

            } 
        });
    }

    protected int Counter(View view) {    
        SharedPreferences settings = getSharedPreferences(String.valueOf(counter), 0);

        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putInt("int value", counter);
        editor.commit();
        sharedPreferences.getInt(String.valueOf(counter), -1);

        return 0;
    }
}

计数器正在工作,但应用程序没有保存任何内容。

【问题讨论】:

  • 你在哪里调用你的计数器函数?

标签: java database save sharedpreferences counter


【解决方案1】:

SharedPreferences 保存键值对。

editor.putInt("int value", counter);

您正在将计数器的值保存在键“int value”中。

并试图用错误的键检索它

sharedPreferences.getInt(String.valueOf(counter), -1);

你应该做的是

sharedPreferences.getInt("int value", -1);

我认为您还混淆了首选项文件名。为了避免混淆,请在类范围内使用 final 字符串。

private final String prefsFileName = "counterFile"; // file name for your shared preferences.
private final String counterKey = "counter"; // key to identify counter in your preferences.

要将计数器值保存到共享首选项,请创建一个方法。

 private boolean saveCounter(int counter){
    SharedPreferences prefs = getSharedPreferences(prefsFileName, Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = prefs.edit();
    editor.putInt(counterKey, counter);
    return editor.commit();
}

要从共享首选项中获取计数器值,请使用另一种方法。

private int getCounterValue() {
    SharedPreferences prefs = getSharedPreferences(prefsFileName, Context.MODE_PRIVATE);
    return prefs.getInt(counterKey, -1);
}

【讨论】:

  • 感谢您的回答,没有工作,但我在项目中取得了进展
  • 很高兴您在项目中取得了进展,但如果答案不起作用,请告诉我更多有关它的信息,我们应该让它起作用。
  • 我的应用程序中有一个计数器,当我点击按钮时计数,我想保存计数器的值。我的英语不太好,对不起。
  • 你的英文没问题!你已经在顶部声明了 sharedPreferences 但你在哪里初始化它?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-16
相关资源
最近更新 更多