AlertDialog.Builder 自定义视图:如何初始化视图?

AlertDialog.Builder with a custom view: how to initialize the view?

我正在开发 AlertDialog 来编辑列表项。我可以使用 Builder.setView 传递我的编辑器布局,我可以从肯定按钮回调中获得结果,但我没有看到初始化视图的方法。例如有一个 EditText 应该显示特定的字符串,等等。可行吗?

我知道我可以子类化 Dialog,但似乎我需要更多的实用程序代码才能实现相同的结果。好像不太干净。

这个非常简单的示例将向您展示如何使用 editText 创建警报对话框(不要使用 xml 布局,以编程方式进行)

public void showDialogWithEditText(){
        AlertDialog.Builder alert = new AlertDialog.Builder(this);
        final EditText edittext = new EditText(this);
        alert.setTitle("Enter your name:");
        alert.setView(edittext);

        alert.setPositiveButton("OK", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {
                String value = edittext.getText().toString();
                // use the value.

            }
        });

        alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {
                // cancel
            }
        });

        alert.show();
    }

简单地说,通过预先膨胀它来保留视图的引用:

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

然后,将您的 EditText 引用为:

EditText editText = (EditText) dialogView.findViewById(R.id.label_field);