마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Textview 사용 관련해 프로그램이 죽는 원인을 알고십습니다..

0 추천
private TextView mStatus;
 
이렇게 textview 객체를 만들고
 
 
onCreate 함수안에서
 
mStatus = (TextView) findViewById(R.id.textview);
 
이렇게 정의를 해주었습니다. 레이아웃파일에는 textview라고 되어있는 텍스트 상자가 존재하구요
 
private final Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MESSAGE_STATE_CHANGE:
if (D)
Log.i(TAG, "MESSAGE_STATE_CHANGE: " + msg.arg1);
switch (msg.arg1) {
case BluetoothTest.STATE_CONNECTED:
mStatus.setText(R.string.status_connected_to);
mStatus.append(mConnectedDeviceName);

break;
case BluetoothTest.STATE_CONNECTING:
mStatus.setText(R.string.status_connecting);
break;
case BluetoothTest.STATE_LISTEN:
case BluetoothTest.STATE_NONE:
mStatus.setText(R.string.status_not_connected);
break;
}
break;
case MESSAGE_READ:
.
.
.
.
 
 
요런 핸들메세지 함수가 존재합니다.
이안에서 switch ~ case문을 통해 따로 메세지를 출력해주려고 하는데

mStatus.setText(R.string.status_connected_to);

와 같은 setText 부분에서 프로그램이 죽습니다.
 
Log 내용은
 
04-11 11:36:17.190: E/AndroidRuntime(9731): FATAL EXCEPTION: main
04-11 11:36:17.190: E/AndroidRuntime(9731): java.lang.NullPointerException
04-11 11:36:17.190: E/AndroidRuntime(9731): at com.shj.Test.TestActivity$1.handleMessage(TestActivity.java:411)
04-11 11:36:17.190: E/AndroidRuntime(9731): at android.os.Handler.dispatchMessage(Handler.java:99)
 
이 내용이 오류 관련된 내용 같은데 어디서 잘못한걸지요? 도와주세요.
그리고 핸들메세지에 관한 내용을 잘몰라서 어떠한 역할을 하는 함수인지 궁금합니다.
자바가 처음이라 아직 익숙해지기 힘이드네요
wassum (260 포인트) 님이 2013년 4월 11일 질문

1개의 답변

0 추천
 
채택된 답변

04-11 11:36:17.190: E/AndroidRuntime(9731): java.lang.NullPointerException
04-11 11:36:17.190: E/AndroidRuntime(9731): at com.shj.Test.TestActivity$1.handleMessage(TestActivity.java:411)

 

널포인트 네요. TestActivity.java파일에서 411 라인을 보세요.

아마도 텍스트 뷰가 null인 모양 입니다.

mStatus = (TextView) findViewById(R.id.textview);  이렇게 텍스트 뷰를 할당해 주셨는데

아마도 id 값이 해당 레이아웃 파일에 없거나

setContentView 메소드 보다 먼저 해당 코드를 작성하셨거나

그래서 텍스트 뷰가 null인것 같습니다.

원조안드로이드 (58,190 포인트) 님이 2013년 4월 11일 답변
wassum님이 2013년 4월 11일 채택됨
감사드립니다. 확인해보니 setContentView 가 잘못되어있었습니다.
현재 두 코드를 합치는 과정에서

setContentView(new MyView(this));
setContentView(R.layout.main);

둘중에 하나를 써야하는데 위에 있는 setContentView(new MyView(this)); 이것은 그림판에 관련된 것이고 밑에 것은 블루투스에 관련된 것입니다.

이두개를 묶어서 하나만 선언하고 기능은 합치려면 어떻게 해야할까요
...