在我正在制作的应用程序中,我有一个“if”语句,如果两个字符串保存到某个字符串,则会弹出AlertDialog。对于某些用户,这些字符串将保持不变,因此每当他们启动ALertDialog设置为显示的活动时,都会不断弹出此AlertDialog。代码(我还没有setNegativeButton):
private void SetWarning() {
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("Warning!");
alert.setMessage(R.string.Warning);
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//No action needed; just close the AlertDialog.
}
});
alert.show(); }
以下是我的代码段,它会显示此AlertDialog:
SharedPreferences sharedPreferences = getSharedPreferences("MY_PREF", MODE_PRIVATE);
String s = sharedPreferences2.getString("MEM1", "");
String s2 = sharedPreferences2.getString("MEM2", "");
if(s.equals("String1") && s2.equals("String2"))
SetWarning();
有没有办法制作“alert.setNegativeButton”方法,如果用户点击它,AlertDialog将永远不会出现?我想某种方式可能以某种方式实现另一个SavedPreferences,以便保存用户选择,然后防止AlertDialog再次出现。到目前为止,没有运气。除了人们询问如何禁用AlertDialog中的按钮之外,我一直在寻找什么。
谢谢!
新的更新代码:
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//set sharedpreferences boolean called DONTSHOWAGAIN to true;
SharedPreferences sharedPreferences2 = getSharedPreferences("MY_PREF", MODE_PRIVATE);
Boolean dontShowAgain = sharedPreferences2.getBoolean("dontShowAgain ", false);
SharedPreferences.Editor ed = sharedPreferences2.edit();
ed.putBoolean("dontShowAgain", true);
ed.commit();
}
});
alert.show(); }
private void StringWarning() {
SharedPreferences sharedPreferences2 = getSharedPreferences("MY_PREF", MODE_PRIVATE);
String s = sharedPreferences2.getString("MEM1", "");
String s2 = sharedPreferences2.getString("MEM2", "");
if(s.equals("String1") && s2.equals("String2")){
if(!dontShowAgain){
SetWarningExamConflict();
}
}
答案 0 :(得分:0)
您只需附加“setNegativeButton”并处理点击:
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//set sharedpreferences boolean called DONTSHOWAGAIN to true;
}
});
然后,更改您的AlertDialog调用:
Boolean dontShowAgain = sharedPreferences2.getBoolean("DONTSHOWAGAIN", false);
if(s.equals("String1") && s2.equals("String2")){
if(!dontShowAgain){
SetWarning();
}
}