안드로이드 개발 질문/답변
(글 수 45,052)
public class SoketChat extends Activity implements OnClickListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView)findViewById(R.id.textView1);
et = (EditText)findViewById(R.id.editText1);
btn = (Button)findViewById(R.id.button1);
btn.setOnClickListener(this);
}
private void connect(String ip, int port) {
tv.setText("test ");
et.append("4");
}
public void onClick(View v){
if(v==btn){
et.append("1");
tv.setText("button!!");
Thread cThread = new Thread() {
public void run() {
try {
et.append("5");
connect(IP, 6001);
et.append("6");
} catch (Exception e) {
}
}
};
et.append("2");
cThread.start();
et.append("3");
}
}
}
MinSDK:8
TargetSDK:16
ComplieSDK:16
테스트환경은 베가레이서2(안드로이드 4.0.3)입니다.
버튼클릭해서 onClick 메소드 호출되고,
tv.setText("button!!");로 인해 TextView도 변경됩니다.
et.append는 1,2,3,5만 실행되네요.
즉 connect 메소드가 아예 호출이 안되는 것 같습니다.
딱히 오류가 뜨거나 하는건 아니구요... ㅠㅠ
왜 이럴까요? 알려주십쇼!
*manifest에서 인터넷 퍼미션 해줬습니다.
2012.12.12 11:25:09
catch문에 Log.e("aa",e+""); 찍어보니 이렇게 나오네요.
android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
http://arabiannight.tistory.com/251 여기보고 해결했습니다.
감사합니다.




아래글 덧글 지워드렸어요.
connect메소드의 접근지정자때문은 아닌지 의심이 되긴 하는데(그럼 오류가 뜨지 않나..)
혹시 모르니 private를 protected로 바꾸고 돌려보세요