package exam.buttonedit;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class ButtonEdit extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.buttonedit);
Button btn = (Button)findViewById(R.id.btn);
btn.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v){
EditText edit = (EditText)findViewById(R.id.edit);
String str = edit.getText().toString(); // 이부분이 잘 이해가 되지 않습니다. 무슨 뜻이죠?
Toast.makeText(ButtonEdit.this, str , Toast.LENGTH_SHORT).show();
}
});
}
}
위 주석 부분을 잘 모르겠습니다...명확한 답변 부탁드립니다...
Charsequence도 맞긴 한데
Charsequence라는 인터페이스를 구현한 Editable 이라는 객체입니다.
Editable은 Charsequence이기도 하지만 Spannable이기도 합니다.
Spannable은 텍스트 뿐만 아니라 이미지, 링크 등을 일정 규칙에 의해 string으로 가지고 있어요.
원래 EditText라는넘이 텍스트 뿐만 아니라 이미지, 링크 같은것도 입력할 수 있도록 되어 있습니다.
그래서 getText로 나온 Editable은 Charsequence를 인자로 받는 곳에는 바로 넣을 수 있지만,
String을 인자로 받는 곳에는 바로 쓸 수 없기 때문에 Charsequence의 toString을 사용하여 String으로 바꿔주는 겁니다.
Edittext 뷰 안에 있는 텍스트내용을, getText() 말 그대로 받는다는 겁니다.
getText 로 텍스트를 가져오면, 데이터 형태가 String이 아닌 Charsequence 로 되어있습니다.(String과 친구입니다.)
그것을 String 형태로 바꿔주어 str 이라는 변수안에 넣는거죠.
토스트 메시지 같은경우는 String 뿐만 아니라 Charsequence 형태로 지원하기 때문에
구지 toString() 을 사용하여 String 형태로 변환해줄 필요는 없을껍니다. (잘 기억은...)