2012-02-01 4 views
1

DialogInterface.OnClickListener()에서 onClick 메서드의 반환 값에 대한 문제가 있습니다. dialog.text에서 문자열 형식 edittext를 반환 할 수 있습니까? 나중에 다른 var에 할당하지 않고 한 번에이 메서드를 호출하면됩니다.onClick()에서 반환 값 returner 메서드에서

//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; 
} 

시험 코드의 경우 ""돌아올 것입니다.이 문제를 어떻게 해결할 수 있습니까? 잘 모르겠어요 모든 답 :

답변

-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 깨끗한 예제를 사용할 수 있습니다.

+0

사실이 아닙니다. 'TextView'의'getText()'메쏘드는'CharSequence'를 리턴하므로'toString()'메소드를 캐스팅하거나 호출하여'String' 변수에 전달해야합니다. – Devunwired

2

OnClickListener에서 값을 반환하려고했습니다. 나머지 코드는 순차적으로 실행되지만 리스너는 사용 작업을 기다릴 것으로 예상됩니다. OnClickListener 값을 다른 메소드 나 전역 변수에 전달해야합니다.

이것을 달성하는 다양한 방법에 대한 설명은 this을 참조하십시오.

+0

+1, 이것이 올바른 해결책입니다. 전화 번호가 설정되기 전에 메소드가 즉시 반환됩니다. 그런 다음 나중에 전화 번호는 값으로 설정되지만 그 지점 이후에는 읽지 않습니다. – Devunwired