我对onClick方法的返回值有一些问题在DialogInterface.OnClickListener()中。 我可以在对话框中返回字符串格式的edittext。当我一次调用此方法而不将其分配给其他var时。
//Exam Code
public String getPhoneNumber(){
String phoneNumber = "";
AlertDialog.Builder alert = new AlertDialog.Builder(context);
alert.setTitle("Please input phone number");
alert.setMessage("ex. 66898765432");
final EditText phoneNumberEditText = new EditText(context);
phoneNumberEditText.setInputType(InputType.TYPE_CLASS_NUMBER);
alert.setView(phoneNumberEditText);
alert.setPositiveButton("Submit",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
phoneNumber = phoneNumberEditText.getText().toString();
{
});
alert.show();
return phoneNumber;
}
在考试代码中它将返回“”。我如何解决这个问题。
感谢所有答案:)
答案 0 :(得分:2)
您的问题是您尝试从OnClickListener
返回值。监听器应该等待使用操作,而剩余的代码按顺序运行。您需要将OnClickListener
中的值传递给其他方法或全局变量。
有关实现此目标的各种方法的讨论,请参阅this。
答案 1 :(得分:-1)
我不确定这是您的格式或代码的结构方式的副作用,而是将您的alert.setPositiveButton..
部分更改为以下内容:
alert.setPositiveButton("Submit",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
phoneNumber = phoneNumberEditText.getText();
}
});
请记住,phoneNumberEditText.getText()
已经返回一个字符串,因此您也不需要.toString()
。如果您在AlertDialog
中输入了数字,那么应正常工作。 Here's你可以使用一个干净的例子。