Android returner方法中onClick()的返回值

Android returner方法中onClick()的返回值,android,Android,我对DialogInterface.OnClickListener()中onClick方法的返回值有一些问题。 我可以在对话框中返回字符串形式的edittext。当我一次调用此方法而不在以后将其分配给其他变量时 //Exam Code public String getPhoneNumber(){ String phoneNumber = ""; AlertDialog.Builder alert = new AlertDialog.Builder(contex

我对DialogInterface.OnClickListener()中onClick方法的返回值有一些问题。 我可以在对话框中返回字符串形式的edittext。当我一次调用此方法而不在以后将其分配给其他变量时

//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;
}
在考试代码中,它将返回“”返回。我如何解决这个问题


感谢您的回答:)

我不确定这是否是您的格式或代码结构的副作用,但请将您的
警报。设置积极按钮..
部分更改为以下内容:

alert.setPositiveButton("Submit",new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int whichButton) {
      phoneNumber = phoneNumberEditText.getText();
    }
  });

请记住,
phonenumberditext.getText()
已经返回了一个字符串,因此您也不需要
.toString()
。如果您已经在
警报对话框中输入了数字,那么这应该可以正常工作。您可以使用一个干净的示例。

我不确定这是否是您的格式或代码结构的副作用,但请将您的
警报。设置积极按钮..
部分更改为以下内容:

alert.setPositiveButton("Submit",new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int whichButton) {
      phoneNumber = phoneNumberEditText.getText();
    }
  });

请记住,
phonenumberditext.getText()
已经返回了一个字符串,因此您也不需要
.toString()
。如果您已经在
警报对话框中输入了数字,那么这应该可以正常工作。您可以使用一个干净的示例。

您的问题是试图从
OnClickListener
返回一个值。侦听器应该等待use操作,而其余代码则按顺序运行。您需要将值从
OnClickListener
传递到其他方法或全局变量


有关实现此目的的各种方法的讨论,请参阅。

您的问题是试图从
OnClickListener
返回值。侦听器应该等待use操作,而其余代码则按顺序运行。您需要将值从
OnClickListener
传递到其他方法或全局变量


有关实现这一点的各种方法的讨论,请参阅。

事实并非如此。任何
TextView
getText()
方法都返回一个
CharSequence
,因此必须强制转换它,或者调用
toString()
方法将其传递到
字符串
变量中。这不是真的。任何
TextView
getText()
方法都返回一个
CharSequence
,因此必须强制转换它,或者调用
toString()
方法将其传递到
字符串
变量中。+1,这是正确的解决方案。您的方法会在设置电话号码之前立即返回。然后,在将来的某个时候,电话号码被设置为一个值,但在该值之后再也不会读取。+1,这是正确的解决方案。您的方法会在设置电话号码之前立即返回。然后,在将来的某个时候,电话号码被设置为一个值,但在该值之后就不再读取。