使用onclick Button仅显示一次自定义对话框

时间:2017-12-08 17:50:08

标签: java android dialog sharedpreferences

我试图只显示一次自定义对话框;首先,我有一个自定义对话框,其中包含一个button 确定,当我单击确定按钮并重新打开应用程序时,我想隐藏自定义对话框,我尝试使用SharedPreference

   SharedPreferences.Editor editor;
    SharedPreferences pref;
    @SuppressLint("CommitPrefEdits")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        pref = getApplicationContext().getSharedPreferences("MyPref", 0);
        editor = pref.edit();
        editor.putBoolean("key_name", false);

/**/

 if (pref.getBoolean("key_name", true)) {
                users();
  }

private void users() {
        final Dialog myDialog = new Dialog(MainActivity.this);
        myDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        assert myDialog.getWindow() != null;
        myDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
        myDialog.setCancelable(false);
        myDialog.setContentView(R.layout.users_artwork_dialog);
        Button okbtn = myDialog.findViewById(R.id.okbtn);

        okbtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0);
                @SuppressLint("CommitPrefEdits") SharedPreferences.Editor editor = pref.edit();
                editor.putBoolean("key_name", false);
                myDialog.dismiss();
            }
        });
        myDialog.show();
    }

2 个答案:

答案 0 :(得分:0)

您应该 editor.commit() editor.apply() 将更改保存到用户中的 SharedPreference ( )方法。这应该可以解决问题。

答案 1 :(得分:0)

您应该 apply() void commit() SharedPreference编辑器。

  

void apply ()
  将您的首选项更改从此编辑器返回到它正在编辑的SharedPreferences对象。这以原子方式执行请求的修改,替换SharedPreferences中当前的任何内容。

     

<强> SharedPreferences.Editor editor; SharedPreferences pref; @SuppressLint("CommitPrefEdits") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); pref = getApplicationContext().getSharedPreferences("MyPref", 0); editor = pref.edit(); editor.putBoolean("key_name", true); //Add commit() editor.commit(); /**/ if (pref.getBoolean("key_name", false)) { users(); } } private void users() { final Dialog myDialog = new Dialog(MainActivity.this); myDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); assert myDialog.getWindow() != null; myDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); myDialog.setCancelable(false); myDialog.setContentView(R.layout.users_artwork_dialog); Button okbtn = myDialog.findViewById(R.id.okbtn); okbtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0); @SuppressLint("CommitPrefEdits") SharedPreferences.Editor editor = pref.edit(); editor.putBoolean("key_name", false); //Add commit() editor.commit(); myDialog.dismiss(); } }); myDialog.show(); }   将您的首选项更改从此编辑器返回到它正在编辑的SharedPreferences对象。这以原子方式执行请求的修改,替换SharedPreferences中当前的任何内容。

检查修改后的代码

{file1,file2,file3}