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

时间:2016-08-03 14:41:22

标签: android alertdialog

我正在使用AlertDialog来编辑列表项。我可以使用Builder.setView传递我的编辑器布局,我可以从正面按钮回调中获得结果,但我没有看到初始化视图的方法。 E. g。应该显示特定字符​​串的EditText,依此类推。它可行吗?

我意识到我可以继承Dialog,但似乎我需要更多的实用程序代码来实现相同的结果。似乎不太干净。

2 个答案:

答案 0 :(得分:7)

简单地说,事先通过膨胀来保留视图的参考:

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);

答案 1 :(得分:1)

这个非常简单的示例将向您展示如何使用editText创建一个Alert对话框(不要使用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();
    }