Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.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
Java 在AlertDialog中显示自定义视图_Java_Android_Android Alertdialog_Android Custom View - Fatal编程技术网

Java 在AlertDialog中显示自定义视图

Java 在AlertDialog中显示自定义视图,java,android,android-alertdialog,android-custom-view,Java,Android,Android Alertdialog,Android Custom View,我有一个扩展LinearLayout的类。它只包含两个编辑框。单击某个按钮,我想在警报对话框中加载这个类。当我单击按钮时,会显示警报对话框,但不会显示扩展LinearLayout的视图类。代码如下。我被绊住了。我能得到一些解决方案吗 public class StudentDialog extends LinearLayout { Context context; LinearLayout layout; public StudentDialog(Context con

我有一个扩展LinearLayout的类。它只包含两个编辑框。单击某个按钮,我想在警报对话框中加载这个类。当我单击按钮时,会显示警报对话框,但不会显示扩展LinearLayout的视图类。代码如下。我被绊住了。我能得到一些解决方案吗

public class StudentDialog extends LinearLayout {
    Context context;
    LinearLayout layout;

    public StudentDialog(Context context) {
        super(context);
        this.context = context;
        createStudentDialog();
    }

    private void createStudentDialog() {

        layout = new LinearLayout(context);
        layout.setOrientation(LinearLayout.VERTICAL);
        layout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
                LayoutParams.MATCH_PARENT));
        layout.setPadding(10, 10, 10, 10);
        layout.setId(200);

        EditText studentName = new EditText(context);
        studentName.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
                LayoutParams.WRAP_CONTENT));
        studentName
                .setTextAppearance(getContext(), TEXT_DIRECTION_FIRST_STRONG);

        EditText address = new EditText(context);
        address.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
                LayoutParams.WRAP_CONTENT));
        address.setTextAppearance(getContext(), TEXT_DIRECTION_FIRST_STRONG);

        layout.addView(studentName);
        layout.addView(address);

    }

}

//Now i am calling this on some button click listener as follows. The alert dialog is displayed but not the StudentDialog. 

StudentDialog dialog = new StudentDialog(this);



        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
        alertDialogBuilder.setView(dialog);

        AlertDialog alertDialog = alertDialogBuilder.create();
        alertDialog.show();

是否希望在警报视图中显示两个编辑文本,就像带有按钮的登录对话框一样,如果是,则只创建一个要在对话框视图中显示的布局。创建一个扩展对话框的类,并在该类的一次创建的setContentView中设置该布局

alertDialogBuilder.setView(dialog);
作为

或者,您可以从StudentDialog类中删除“layout”变量,因为它已经是一个LinearLayout。您可以从createStudentDialog函数内部将视图添加到“this”。然后它就会像预期的那样工作。您在原始代码中所做的是将EditText添加到一个布局中,并将另一个布局添加到AlertDialog中。请按照此操作,您有一个扩展对话框而不是视图,只需创建该类的对象,并且您可以使用“显示为对话框查看”。
alertDialogBuilder.setView(dialog.layout);