我无法保存整数

I can't save integer

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

我试过 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;
    }
}

计数器正在运行,但应用程序未保存任何内容。

SharedPreferences 保存键值对。

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

您正在键 "int value" 中保存计数器的值。

并试图通过错误的密钥检索它

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

你应该做的是

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

我认为您也混淆了首选项文件名。为了减少混淆,请在 class 范围内使用最终字符串。

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