我无法保存整数

时间:2019-10-14 19:39:15

标签: java database save sharedpreferences counter

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

我尝试了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 个答案:

答案 0 :(得分:0)

SharedPreferences保存键值对。

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

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

并尝试通过错误的密钥进行检索

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

您应该做的是

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

我认为您也在混淆首选项文件名。为了减少混乱,请在类范围内使用final String。

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);
}