Java 我能';t保存整数

Java 我能';t保存整数,java,database,save,sharedpreferences,counter,Java,Database,Save,Sharedpreferences,Counter,我想将计数器保存在应用程序内存中并显示它 我尝试了SharedReferences,但没有成功 public class MainActivity extends AppCompatActivity { SharedPreferences sharedPreferences; int counter = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate

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

我尝试了
SharedReferences
,但没有成功

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

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

SharedReferences保存键值对

editor.putInt("int value", counter);
您正在“int value”键中保存计数器的值

并试图用错误的键检索它

sharedPreferences.getInt(String.valueOf(counter), -1);
你应该做的是

sharedPreferences.getInt("int value", -1);
我认为您也混淆了首选项文件名。要避免混淆,请在类范围中使用最后一个字符串

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

你在哪里调用你的计数器功能?谢谢你的回答,不起作用,但我在项目中取得了进展很高兴你在项目中取得了进展,但如果答案不起作用,那么告诉我更多关于它的信息,我们应该让它起作用。我的应用程序中有一个计数器,当我点击按钮时开始计数,我想保存计数器的值。我的英语不是很好,对不起。你的英语还可以!您已经在顶部声明了SharedReferences,但在哪里初始化了它?