我试图只显示一次自定义对话框;首先,我有一个自定义对话框,其中包含一个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();
}
答案 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}