有没有办法让用户完全禁用AlertDialog?

时间:2013-11-12 03:01:36

标签: android android-alertdialog

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

1 个答案:

答案 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();
    }
}