从onClick()返回值在返回方法中

时间:2012-02-01 07:04:48

标签: android

我对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;
}

在考试代码中它将返回“”。我如何解决这个问题。

感谢所有答案:)

2 个答案:

答案 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你可以使用一个干净的例子。