我正在使用AlertDialog
来编辑列表项。我可以使用Builder.setView
传递我的编辑器布局,我可以从正面按钮回调中获得结果,但我没有看到初始化视图的方法。 E. g。应该显示特定字符串的EditText
,依此类推。它可行吗?
我意识到我可以继承Dialog
,但似乎我需要更多的实用程序代码来实现相同的结果。似乎不太干净。
答案 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();
}