Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在运行时单击肯定按钮更改警报对话框布局_Android_Android Alertdialog_Android Dialogfragment_Customdialog - Fatal编程技术网

Android 在运行时单击肯定按钮更改警报对话框布局

Android 在运行时单击肯定按钮更改警报对话框布局,android,android-alertdialog,android-dialogfragment,customdialog,Android,Android Alertdialog,Android Dialogfragment,Customdialog,如何在运行时更改自定义警报对话框的布局(onclick\u positive\u按钮) 示例:创建警报对话框,使用布局1onClick,将正向按钮更改为布局2 AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this); final LayoutInflater inflater = this.getLayoutInflater(); View dialogView = in

如何在运行时更改自定义警报对话框的布局(onclick\u positive\u按钮

示例:创建
警报对话框
,使用布局1
onClick
,将正向按钮更改为布局2

        AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);

        final LayoutInflater inflater = this.getLayoutInflater();
        View dialogView = inflater.inflate(R.layout.layout_1, null);
        dialogBuilder.setView(dialogView);

        final AlertDialog finalAlertDialog = alertDialog;
        dialogBuilder.setPositiveButton("time", 
                                  new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {

              View view=   inflater.inflate(R.layout.layout_2,null);
                finalAlertDialog.setContentView(view);
                finalAlertDialog.show();

            }
        });

        dialogBuilder.setNegativeButton("cancel", 
                                  new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {

                dialog.dismiss();

            }
        });

         alertDialog = dialogBuilder.create();

        alertDialog.show();
直接用这个,

dialogBuilder.setContentView(R.layout.layout_2);

根据您的要求,我建议您只为dialog创建一个xml文件,并在需要时使您的组件可见和不可见,因此首先创建xml文件,如下所示

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin">

    <TextView
        android:id="@+id/Textbox1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:hint="Enter Your Text Here"
        android:text="Hello ,there !"
        android:textSize="25dp" />

    <TextView
        android:id="@+id/TextBox2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/Textbox1"
        android:layout_marginTop="30dp"
        android:hint="Your Text Appears Here"
        android:textSize="25dp" />

    <Button

        android:id="@+id/CopyText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/TextBox2"
        android:layout_marginLeft="107dp"
        android:layout_marginStart="107dp"
        android:layout_marginTop="85dp"
        android:text="Copy Text" />

</RelativeLayout>

在finalAlertDialog.show()之前添加dialog.disclose();谢谢你的重播。。。我收到此错误:尝试在空对象引用上调用虚拟方法“void android.support.v7.app.AlertDialog.setContentView(int)”。此操作刚刚关闭对话框。感谢您的回复,它为我提供了新的警报对话框,我需要用新的布局替换现有布局。
         LayoutInflater layoutInflater = LayoutInflater.from(MainActivity.this);
                final View promptView = layoutInflater.inflate(R.layout.activity_main, null);

                final android.app.AlertDialog alertDialog = new android.app.AlertDialog.Builder(MainActivity.this)
                        .setView(promptView)
                        .setCancelable(false)
                        .setPositiveButton("time", null)
                        .setNegativeButton("cancel", null)
                        .create();

                alertDialog.setOnShowListener(new DialogInterface.OnShowListener() {
                    @Override
                    public void onShow(DialogInterface dialog) {

                        Button btn_positive = alertDialog.getButton(android.app.AlertDialog.BUTTON_POSITIVE);
                        Button btn_negative = alertDialog.getButton(android.app.AlertDialog.BUTTON_NEGATIVE);

                        btn_positive.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {

                                Button btn = (Button) promptView.findViewById(R.id.CopyText);

    /* Here i set button visibility gone so the same xml file but updated
 here you can set other component visibility Visible and Visibility.Gone 
as per your requirement */
                                if (btn.getVisibility() == View.GONE) {
                                    alertDialog.dismiss();
                                } else {
                                    btn.setVisibility(View.GONE);
                                }
                            }
                        });

                        btn_negative.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                alertDialog.dismiss();
                            }
                        });
                    }
                });
                alertDialog.show();