1

在我正在制作的应用程序中,我有一个“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();
        }
        }
4

1 回答 1

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();
    }
}
于 2013-11-12T03:17:35.537 回答