我使用sharedPreferences记录点击次数。
当它增加到五的倍数时,它会显示一个对话框,我可以选择是否退出。
我试试这个:
//global
private int count=0;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
SharedPreferences sharedPreferences = getSharedPreferences("count", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt("count",count++);
int record = sharedPreferences.getInt("count", 0);
Toast.makeText(this, record + "test", Toast.LENGTH_SHORT).show();
if (record % 5 == 0) {
quickDialog();//show dialog for quick
}
}
return super.onKeyDown(keyCode, event);
}
1。 问题是我的祝酒记录,它总是显示0。
2。 和Dialog也显示每次点击。
为什么呢?
答案 0 :(得分:2)
因为您没有保存偏好状态,
editor.putInt("count",count++);
// count is not saved yet
int record = sharedPreferences.getInt("count", 0);
// always get default value as zero
因此您需要使用editor.commit
或editor.apply
editor.putInt("count",count++);
editor.commit();
//^^^
int record = sharedPreferences.getInt("count", 0);
答案 1 :(得分:1)
提交更改,使其在SharedPreference中保留。否则,它将始终返回默认值,在本例中为0。
editor.putInt("count",count++);
editor.commit();
答案 2 :(得分:0)
提交您的更改
private int count=0;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
SharedPreferences sharedPreferences = getSharedPreferences("count", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt("count",count++);
editor.commit();
int record = sharedPreferences.getInt("count", 0);
Toast.makeText(this, record + "test", Toast.LENGTH_SHORT).show();
if (record % 5 == 0) {
quickDialog();//show dialog for quick
}
}
return super.onKeyDown(keyCode, event);
}
答案 3 :(得分:0)
要保存该值,您的editor
未进行commit()
:
editor.commit();