1

私が作成しているアプリには、特定の文字列に 2 つの文字列が保存されている場合に AlertDialog がポップアップする "if" ステートメントがあります。これらの文字列は一部のユーザーに対して同じままであるため、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();

ユーザーがクリックした場合に AlertDialog が二度と表示されない「alert.setNegativeButton」メソッドを作成する方法はありますか? 何らかの方法で別の 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