点击后退按钮,获取五倍和快速应用的倍数

时间:2017-01-12 08:35:30

标签: android

我使用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也显示每次点击。

为什么呢?

4 个答案:

答案 0 :(得分:2)

因为您没有保存偏好状态,

 editor.putInt("count",count++);
 //  count is not saved yet     
 int record = sharedPreferences.getInt("count", 0);
 // always get default value as zero

因此您需要使用editor.commiteditor.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();