警告对话框否定按钮相同 activity

Alert Dialog negative button to same activity

我正在尝试一个简单的应用程序,用户可以在其中输入他的号码。我会显示一个警告对话框以确认他的手机号码。如果用户选择 "YES",我会将他重定向到下一个 activity。但问题是,如果用户 select "NO" 我想显示相同的 activity 来编辑号码。

现在我通过调用同一个 activity 的 Intent 来做到这一点。但这是一种不好的做法。如何在 activity 中显示与上次输入的数字相同的 activity?

以下是我的尝试。 按下按钮

phoneNum = (EditText) findViewById(R.id.editTextPhoneNumber);
String phNum = phoneNum.getText().toString();
AlertDialog.Builder alertDialog = new AlertDialog.Builder(
        MainActivity.this);
alertDialog.setTitle("CONFIRM");
alertDialog.setMessage("Is this your correct number? \n" + phNum
        + " a SMS will be sent to verify your phone number.");
alertDialog.setPositiveButton("YES",
        new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                sendOtp();
                Intent myIntent = new Intent(getApplicationContext(),
                        Activity2Activity.class);
                startActivity(myIntent);
            }
        });
alertDialog.setNegativeButton("NO",
        new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                // dialogInterface.cancel();
                Intent sameIntent = new Intent(MainActivity.this,
                        MainActivity.class);
                startActivity(sameIntent);
                finish();
            }
        });
alertDialog.show();

使用这个:

getDialog().dismiss();

因为您只需要显示相同的 activity,只需在单击否定按钮时关闭对话框即可。

alertDialog.setNegativeButton("NO", new DialogInterface.OnClickListener() {
    @Override 
    public void onClick(DialogInterface dialogInterface, int i) {
        alertDialog.dismiss();   
    }
}

您可以阅读这份参考文档: Official Doc : Dialog Dismiss

注意这句话: 当用户触摸任何使用 AlertDialog.Builder 创建的操作按钮时,系统会为您关闭对话框。
无论用户点击Builder生成的哪个按钮,系统都会关闭对话框。

alertDialog.setNegativeButton("NO", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialogInterface, int i) {
        //Just leave it empty here.
    }
});

试试用这个。它会帮助你

phoneNum = (EditText) findViewById(R.id.editText1);
    String phNum = phoneNum.getText().toString();
    final AlertDialog.Builder alertDialog = new AlertDialog.Builder(
            MainActivity.this);
    alertDialog.setTitle("CONFIRM");
    alertDialog.setMessage("Is this your correct number? \n" + phNum
            + " a SMS will be sent to verify your phone number.");
    alertDialog.setPositiveButton("YES",
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i)        {
                     sendOtp();
                     Intent myIntent = new Intent(getApplicationContext(),
                     Activity2Activity.class);
                     startActivity(myIntent);
                }
            });
    alertDialog.setNegativeButton("NO",
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    // dialogInterface.cancel();

                }
            });
    alertDialog.show();

如果您不想发生任何事情,则不必使用 OnClickListener,只需输入 null

例如:

builder.setPositiveButton("OK", null);
public void SureEvent() {
    final AlertDialog.Builder ad = new AlertDialog.Builder(this);
    ad.setMessage("Are You sure Want to exit ?");

    ad.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            Toast.makeText(MainActivity.this, "Closing..", Toast.LENGTH_SHORT).show();
            finish();
        }
    })
            .setNegativeButton("No", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();//Syntax:DialogInterface_varible.method()
                    //dialog.cancel();
                }
            })
            .show();
}