2012-03-20 2 views
0
public class DialogWithInputBox extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     final AlertDialog.Builder alert = new AlertDialog.Builder(this); 
     final EditText input = new EditText(this); 
     alert.setView(input); 
     alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 
      String value = input.getText().toString().trim(); // important line! 
      Toast.makeText(getApplicationContext(), value, Toast.LENGTH_SHORT).show(); 
      return value; 
     } 
    }); 

    alert.setNegativeButton("Cancel", 
    new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int whichButton) { 
      dialog.cancel(); 
     } 
    }); 
    alert.show();  
} 

위 코드는 확인 및 취소 버튼이있는 대화 상자를 제공합니다. 지역 변수 value이 있습니다. 이것을 다른 방법으로 전달하고 싶습니다. return + local 변수를 넣으면 onclickevent 리스너 유형을 변경하라는 메시지가 표시됩니다.메소드를 전달하는 Android가 함수로 돌아 가기

+0

안녕하세요, 좋아요, 내가 좋아하는 버튼을 누른 다음 편집 작업의 가치를 다음 활동에 바로 전달하고 싶습니다. – Hasmukh

답변

3

음, 그렇습니다. 반환 유형이 void 인 메소드에서 값을 반환 할 수 없습니다. 당신이 잠시 동안 머물이 값을해야하는 경우

  1. , 당신은 value 당신의 활동의 필드를 만들고, 당신의 클릭 핸들러에 설정할 수 있습니다 : 당신은 두 가지 선택이있다. 그런 다음 활동의 다른 메소드에서이를 참조 할 수 있습니다.
  2. 일시적으로 사용해야하는 경우 value을 호출해야하는 다른 방법 인 에 대한 인수로에서 직접 전달합니다.
0

이것은 순수한 자바 문제입니다. 클래스 멤버에게 값을 전달할 수 있습니다.

public class DialogWithInputBox extends Activity { 

private String dest; 

.. 
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int whichButton) { 
     dest = input.getText().toString().trim(); 
.. 
+0

: 문자열로 onClick 언급했지만 그것은 무효, 매개 변수를 int 및 string.what해야할까요? –

0

메소드의 반환 유형을 변경할 수 없습니다.

값을 반환하여 예상 한 결과가 완전히 명확하지 않습니다. 누구에게 돌아 가기 ?? 그 문자열로 무엇을해야합니까?

호출자가 값을 가져 오지만 발신자 (긍정적 인 버튼)에 아무 것도 기대하지 않습니다. Google에서 제공 한 코드는 메소드 버튼을 호출하여 onClick 메서드를 호출합니다. 그리고 버튼은 그 이상을 할 것입니다. 버튼은 onClick 메서드가 어떻게 구현되는지 전혀 모릅니다.

유일한 방법은 멤버 var를 설정하거나 해당 값을 사용하여 메소드를 호출하는 것입니다.