Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 显示一次弹出窗口?_Java_Android_Database_String_Algorithm - Fatal编程技术网

Java 显示一次弹出窗口?

Java 显示一次弹出窗口?,java,android,database,string,algorithm,Java,Android,Database,String,Algorithm,我正在尝试显示一个弹出窗口,如果用户再次单击“不显示”,我希望不再显示它。但是,不再显示按钮不工作。我正在使用共享首选项: if (dialogPrefs.getBoolean("Show", true) == true) { new AlertDialog.Builder(this) .setTitle("Blah") .setMessage("Blah blah blah

我正在尝试显示一个弹出窗口,如果用户再次单击“不显示”,我希望不再显示它。但是,
不再显示
按钮不工作。我正在使用共享首选项:

        if (dialogPrefs.getBoolean("Show", true) == true) {

            new AlertDialog.Builder(this)
                    .setTitle("Blah")
                    .setMessage("Blah blah blah ")
                    .setNegativeButton("Not now", null)
                    .setNeutralButton("Don't show again", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            dialogEditor = dialogPrefs.edit();
                            dialogEditor.putBoolean("Show", false);
                            dialogEditor.commit();
                        }
                    })
                    .setPositiveButton("Enable", new DialogInterface.OnClickListener() {

                        public void onClick(DialogInterface dialog, int which) {
                         enable();
                        }
                    }).show();
我的首选项和编辑器在开头声明如下:

SharedPreferences dialogPrefs;
SharedPreferences.Editor dialogEditor;
共享pref在
onCreate()
中初始化

请让我知道可能是什么问题

谢谢


Ruchir

SharedReferences.Editor.commit()
返回一个布尔值,指示对实际SharedReferences对象的写入状态。查看
commit()
是否返回
true
。另外,请确保您没有使用两个编辑器编辑相同的SharedReference。最后提交的编辑器将反映其更改


更新当我运行代码时,您的代码工作正常。我看不出你的代码有任何错误。请确保您正在向同一共享参考文献写信和阅读

SharedReferences.Editor.commit()
返回一个布尔值,指示对实际SharedReferences对象的写入状态。查看
commit()
是否返回
true
。另外,请确保您没有使用两个编辑器编辑相同的SharedReference。最后提交的编辑器将反映其更改


更新当我运行代码时,您的代码工作正常。我看不出你的代码有任何错误。请确保您正在向同一共享参考文献写信和阅读

您的问题是
共享引用的声明
;它已全部声明,但…未初始化!操作系统应将键值数据写入何处

我建议你读一下这个

尝试此代码,我测试了它并运行:

SharedPreferences dialogPrefs = this.getPreferences(Context.MODE_PRIVATE);
final SharedPreferences.Editor dialogEditor = dialogPrefs.edit();


if (dialogPrefs.getBoolean("Show", true)) {

    new AlertDialog.Builder(this)
            .setTitle("Blah")
            .setMessage("Blah blah blah ")
            .setNegativeButton("Not now", null)
            .setNeutralButton("Don't show again", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialogEditor.putBoolean("Show", false);
                    dialogEditor.commit();
                }
            })
            .setPositiveButton("Enable", new DialogInterface.OnClickListener() {

                public void onClick(DialogInterface dialog, int which) {
                    Log.i("TAG", "onClick: enable");
                }
            }).show();
}
}

您的问题是
共享引用的声明
;它已全部声明,但…未初始化!操作系统应将键值数据写入何处

我建议你读一下这个

尝试此代码,我测试了它并运行:

SharedPreferences dialogPrefs = this.getPreferences(Context.MODE_PRIVATE);
final SharedPreferences.Editor dialogEditor = dialogPrefs.edit();


if (dialogPrefs.getBoolean("Show", true)) {

    new AlertDialog.Builder(this)
            .setTitle("Blah")
            .setMessage("Blah blah blah ")
            .setNegativeButton("Not now", null)
            .setNeutralButton("Don't show again", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialogEditor.putBoolean("Show", false);
                    dialogEditor.commit();
                }
            })
            .setPositiveButton("Enable", new DialogInterface.OnClickListener() {

                public void onClick(DialogInterface dialog, int which) {
                    Log.i("TAG", "onClick: enable");
                }
            }).show();
}
}

应该是这样的:

if (!dialogPrefs.getBoolean("Show", false)) {//don't show again will work
而不是:

if (dialogPrefs.getBoolean("Show", true) == true) {//this will always show dialog

应该是这样的:

if (!dialogPrefs.getBoolean("Show", false)) {//don't show again will work
而不是:

if (dialogPrefs.getBoolean("Show", true) == true) {//this will always show dialog

它已初始化,请看我答案的底部,我在开头声明了它。ruchir是的,它已声明但未初始化。哦,很抱歉,我忘记显示初始化。它实际上是在onCreate()中初始化的。我将编辑我的问题:)好的!发布完整的代码,这样我们就可以运行您的代码片段来帮助您!但是,即使尝试你的答案中所写的方式对我也不起作用。它是初始化的,请看我答案的底部,在那里我声明它是在开头声明的。ruchir是的,它是声明的,但不是初始化的。哦,很抱歉,我忘了显示初始化。它实际上是在onCreate()中初始化的。我将编辑我的问题:)好的!发布完整的代码,这样我们就可以运行您的代码片段来帮助您!但是,即使尝试在您的答案中所写的方式,我也不适用。请显示您如何在onCreate方法中初始化dialogPrefs和dialogEditor,或发布完整的代码请显示您如何在onCreate方法中初始化dialogPrefs和dialogEditor,或发布完整的代码