我想将计数器保存在我的应用程序内存中并显示它。
我尝试了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;
}
}
计数器正在工作,但应用程序未保存任何内容。
答案 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);
}