我无法保存整数

Posted

技术标签:

【中文标题】我无法保存整数【英文标题】: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;
    

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

【问题讨论】:

你在哪里调用你的计数器函数? 【参考方案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 但你在哪里初始化它?

以上是关于我无法保存整数的主要内容,如果未能解决你的问题,请参考以下文章

在核心数据中保存一个整数

如何保存整个整数数组?

在 MATLAB 中将数据保存到 .mat 文件

保存整数的 sharedPreferences [重复]

保存和整数并共享它将所有类

应用程序退出时保存整数 - Apple iOS