简体   繁体   English

AlertDialog里面的alertdialog android

[英]AlertDialog inside alertdialog android

I am trying to add an alertdialog within an alertdialog.But not able to see the second alertdialog..please help me here is my code shown我正在尝试在 alertdialog 中添加一个 alertdialog。但无法看到第二个 alertdialog ..请帮助我这里显示的是我的代码

AlertDialog alertDialog = new AlertDialog.Builder(myclass.this).create();
alertDialog.setTitle("First alert");
alertDialog.setMessage("first alert press");
alertDialog.setButton("ok", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int which) {
        // here you can add functions
        dialog.cancel();

        AlertDialog alertDialog1 = new AlertDialog.Builder(myclass.this).create();
        alertDialog1.setTitle("second alert dialog");
        alertDialog1.setMessage("second alert dialog details");
        alertDialog1.setButton("Scan Another", new DialogInterface.OnClickListener() {
                           public void onClick(DialogInterface dialog, int which) {
}}); }

It is gonna be a late answer but you can create an AlertDialog inside onClickListener just like this:这将是一个迟到的答案,但您可以像这样在 onClickListener 中创建一个 AlertDialog:

public void onClick(DialogInterface dialog, int which) {
    if (options[which] == "Manage") {
      //Do smtg
    } else {
        dialog.dismiss();
        final AlertDialog alert;

        AlertDialog.Builder dialog2 = new AlertDialog.Builder(CategoryPage.this);
        alert = dialog2.create();
        alert.setTitle("Delete " + title + "?");
        alert.setMessage("Are you sure you want to delete this category?");

        alert.setButton("Yes", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                Toast.makeText(CategoryPage.this, "YESS", Toast.LENGTH_LONG).show();
            }
        });

        alert.setButton2("No", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                alert.dismiss();
            }
        });

        alert.show();
    }
}

I found the way might be it will be helpful for someone so thats why i am sharing:我发现方法可能对某人有帮助,所以这就是我分享的原因:

//2nd Alert Dialog
                AlertDialog.Builder alertDialogBuilderSuccess = new AlertDialog.Builder(
                        context);
                alertDialogBuilderSuccess.setTitle("TopUp Success");
                // set dialog message
                alertDialogBuilderSuccess
                        .setMessage(
                                "You voucher is printed, please go to the cashier.")
                        .setCancelable(false)
                        .setIcon(R.drawable.ic_launcher2)
                        .setPositiveButton("Confirm",
                                new DialogInterface.OnClickListener() {
                                    public void onClick(
                                            DialogInterface dialog, int id) {

                                        finish();
                                    }
                                });

                // create alert dialog
                final AlertDialog alertDialogSuccess = alertDialogBuilderSuccess.create();








                //////////////////////////////////
                //1st Alert
                AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                        context);
                alertDialogBuilder.setTitle("TopUp Request");
                // set dialog message
                alertDialogBuilder
                        .setMessage(
                                "Please confirm: " + vendor_name + ", "
                                        + tvLoadAmount.getText())
                        .setCancelable(false)
                        .setIcon(R.drawable.ic_launcher2)
                        .setPositiveButton("Confirm",
                                new DialogInterface.OnClickListener() {
                                    public void onClick(
                                            DialogInterface dialog, int id) {

                                        //calling the second alert when it user press the confirm button
                                        alertDialogSuccess.show();
                                    }
                                })
                        .setNegativeButton("Cancel",
                                new DialogInterface.OnClickListener() {
                                    public void onClick(
                                            DialogInterface dialog, int id) {
                                        dialog.cancel();
                                    }
                                });

                // create alert dialog
                AlertDialog alertDialog = alertDialogBuilder.create();

                // show it
                alertDialog.show();

AlertDialogs aren't supposed to let another AlertDialog to be open. AlertDialogs 不应该让另一个 AlertDialog 打开。 If it is really what you want, then change your main AlertDialog to Dialog.如果它确实是您想要的,那么将您的主要 AlertDialog 更改为 Dialog。 This way you can manually add the buttons and functionality you require for manage the secondary AlertDialog通过这种方式,您可以手动添加管理辅助 AlertDialog 所需的按钮和功能

import android.widget.TextView;
import android.widget.Button;
import android.view.View;
import android.content.DialogInterface;

public class MainActivity extends AppCompatActivity {
    Button click;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        click=(Button)findViewById(R.id.btnId);

        click.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                txtSubmit();
            }
        });
    }


protected void txtSubmit(){
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("This is alert title");
        builder.setMessage("This is message for Alert dialog");
        builder.setPositiveButton("Yup", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                AlertDialog.Builder builder1 = new AlertDialog.Builder(MainActivity.this);
                builder1.setTitle("This is alert title inside");
                builder1.setMessage("This is message for Alert dialog inside");
                builder1.show();
            }
        });
        builder.show();
    }
}

The txtSubmit function calling from the onClick event listener.从 onClick 事件侦听器调用的txtSubmit函数。 Also for the second alert dialog need to open I have to pass同样对于需要打开的第二个警报对话框,我必须通过

AlertDialog.Builder builder1 = new AlertDialog.Builder(MainActivity.this);

Here, we have to bind the this event using className在这里,我们必须使用className绑定 this 事件

When we click on the yup button in the first dialog,it shows the second dialog that insides in the first one当我们点击第一个对话框中的 yup 按钮时,它会显示第一个对话框中的第二个对话框

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM