【发布时间】:2019-09-05 03:11:18
【问题描述】:
我有一种在片段中创建警报对话框的方法
private void alertDialog() {
final EditText editTextField = new EditText(this.getContext());
AlertDialog dialog = new AlertDialog.Builder()
.setTitle("Title")
.setMessage("Message")
.setView(editTextField)
.setPositiveButton("OK", this)
.setNegativeButton("Cancel", null)
.create();
dialog.show();
}
然后我实现了DialogInterface.OnClickListener
public void onClick(DialogInterface dialogInterface, int i){
switch(i){
case DialogInterface.BUTTON_POSITIVE:
String name = String.valueOf(editTextField.getText());
break;
case DialogInterface.BUTTON_NEGATIVE:
break;
}
}
但是onClick 方法中的editTextField 无法引用警报对话框。有没有办法解决这个问题?或者唯一的方法是在警报对话框构建器中创建一个带有编辑文本和setView 的布局?
【问题讨论】:
-
你的意思是当
editText被点击时,什么都没有发生? -
不,editTextField.getText() 无法解析。 @约翰乔
-
@EricLow 您在 alertdialog 中将 edittext 声明为局部变量。您无法在该方法之外访问该变量
-
final EditText editTextField是本地的,因此仅存在于alertDialog()方法中。因此,您无法在它之外访问它。您需要将其声明为全局 -
@Vladyslav Matviienko ,是的,我知道,但如果声明为全局,我无法执行 setView。错误显示NullPointerException:尝试调用虚拟方法'android.content.res.Resouces.
标签: android android-alertdialog