1

この質問で説明されているのと同じ問題があります

警告ダイアログを閉じた後もポップアップする

問題は、ユーザーが無効なデータを入力して送信ボタンをクリックすると、失敗したアラート ダイアログが開かれることです。失敗したアラートダイアログにボタン(続行)があり、クリックした後、dialog.dismiss();を書きました。ユーザーがデータを再確認して変更できるように、それを非表示にします。しかし、問題は、方向を変更した場合にデータを再確認して変更しているときに、送信ボタンをクリックしなくても失敗したアラートダイアログが再びポップアップすることです。提案してください。

ここに私のコードがあります、助けてください....

final EditText Name = (EditText) findViewById(R.id.editText1);

    final EditText Phone = (EditText) findViewById(R.id.editText2);

    final EditText Email = (EditText) findViewById(R.id.editText3);

    final EditText Message = (EditText) findViewById(R.id.editText4);

    final AlertDialog alertDialog = new AlertDialog.Builder(Contact.this)
            .create();

    alertDialog.setButton("Continue..",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    // here you can add functions
                    alertDialog.dismiss();
                }
            });

    Submit = (ImageButton) findViewById(R.id.bSubmit);
    Submit.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {

            if (Name.getText().toString().length() > 0) {

                if (Phone.getText().toString().matches("^[0-9]{1,10}$")) {

                    if (Email.getText().toString()
                            .matches("[a-zA-Z0-9._-]+@[a-z]+.[a-z]+")) {

                        if (Message.getText().toString().length() > 10) {

                            //Calling async class and sending data to server

                        } else

                            alertDialog.setMessage("msg is tooo short...");
                        alertDialog.show();
                    } else
                        alertDialog.setMessage("Invalid email ID");
                    alertDialog.show();
                } else

                    alertDialog.setMessage("Invalid Number...");
                alertDialog.show();

            } else

                alertDialog.setMessage("Enter the Name...!");
            alertDialog.show();

        }

    });
4

2 に答える 2

1

方向を変更すると、アクティビティが破棄され、onCreate を呼び出して再起動します。ダイアログがクリアされていることを確認するために、オーバーライドされた onResume() でこれを処理する必要がある場合があります。アクティビティのライフサイクルについては、こちらをご覧ください。 http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

于 2012-11-05T16:30:02.567 に答える
0
alertDialog.show();

これは、コードに応じて2回呼び出されます。上記の行を他のすべての場所から削除し、最後に1回使用するだけです。

于 2012-11-05T16:21:03.467 に答える