2016-08-11 9 views
0
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    mButton = (Button)findViewById(R.id.okay); 
    mEdit = (EditText)findViewById(R.id.name); 
    final TextView questionOne =(TextView)findViewById(R.id.questionOne); 
    final String name = mEdit.getText().toString(); // 

    mButton.setOnClickListener(
      new View.OnClickListener() 
      { 
       public void onClick(View view) 
       { 
        Log.v("EditText", mEdit.getText().toString()); 
       } 
      }); 

    mButton.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 

      questionOne.setText("Tell me your lucky number, " + name + "!"); 

     }   }); 
} 

} UserInput 작업으로이 변수를 만들려면 어떻게해야합니까? 안드로이드

그래서, 내 목표는 사용자가 자신의 이름을 작성하고 다음의 setText 방법으로 그것을 밖으로 인쇄 할 수 있도록하는 것입니다. 이렇게하기 위해 나는 변수 "name"을 선언했다. 그러나 앱을 실행하고 내 이름을 입력하면 "내게 행운의 숫자를 말해!"라는 문구가 인쇄됩니다. 따라서 변수 이름이 완전히 누락되었습니다. 누군가 내가 변수에 대해 무엇을 잘못했는지 말해 줄 수 있습니까? 미리 감사드립니다.

답변

0

먼저 버튼의 원 클릭 수신기를 덮어 썼습니다. EditText 내용을 한 지점에서 로깅했습니다.

어쨌든 이것은 뷰가로드 될 때 즉시 텍스트를 가져옵니다.

final String name = mEdit.getText().toString(); 

(해당 필드에 기본 텍스트를 넣어하지 않는 한, 그것은 빈 문자열) 그리고 그 변수도 값을 변경할 수 없다 그래서, final입니다.

버튼 이벤트에 "반응"해야합니다. 그렇게해라.

mButton.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     String name = mEdit.getText().toString(); 
     questionOne.setText("Tell me your lucky number, " + name + "!"); 
    }   
}); 
+0

정말 고마워요. 그래서 만약 내가 그런 식으로하고 싶다면, 일단 변수가 바뀌면 변수를 바꾸지 않거나 더 좋은 방법이 있기 때문에 최종 변수를 사용하는 것이 괜찮습니까? – Julian

+0

변수를 final로 선언하는 데는 아무런 문제가 없지만 EditText 내용은 여전히 ​​변경 될 수 있으므로 참조 된 변수를 변경할 수없는 변수입니다. –