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

널포인터익셉션 좀 잡아주세요ㅠㅠ!!!!!!!

0 추천
@Override
	public void onSensorChanged(SensorEvent event) {
		synchronized (this) {

			Rdegtext = (TextView) findViewById(R.id.RdegText);//프래그먼트 1 
			Ldegtext = (TextView) findViewById(R.id.LdegText);//프래그먼트 1
			Rpretext = (TextView) findViewById(R.id.RpreText);//프래그먼트 1
			Lpretext = (TextView) findViewById(R.id.LpreText);//프래그먼트 1
			TabText= (TextView) findViewById(R.id.TabText);//프래그먼트 2
			BluetextView = (TextView) findViewById(R.id.BlueText);//프래그먼트 3
			float var0 = event.values[0];
			float var1 = event.values[1];
			float var2 = event.values[2];

			switch (event.sensor.getType()) {
				case Sensor.TYPE_ACCELEROMETER:			
					TabText.setText(var0+"deg"); //이부분은 잘됩니다.
		
				  
				        //Rdegtext.setText("deg"); 이부분만 넣으면 널포인터 익셉션 
					break;
				case Sensor.TYPE_ORIENTATION:
					
					break;
				default:
					break;
			}
		}


	}

같은 텍스트 뷰이고 똑같이 findViewbyid로 찾고 했는데 다른 textView에 setText를 하면 널포인터익셉션이 납니다... 같은 질문 올렸는데 해결을 못해서 ... 탭 뷰로 구성되어있고 널포인터익셉션 나는 시점이 3번째 탭을 눌렀을 때 입니다.

메인엑티비티 전체코드 주소와 로그캣 첨부합니다.ㅠㅠ

소스는 길어서 링크로 걸겠습니다.

http://blog.naver.com/wit010

로그캣입니다.

01-07 16:25:19.295 14590-14590/? E/SensorManager: Exception dispatching input event.
01-07 16:25:19.296 14590-14590/? E/AndroidRuntime: FATAL EXCEPTION: main
01-07 16:25:19.296 14590-14590/? E/AndroidRuntime: Process: org.androidtown.Monitoring_1, PID: 14590
01-07 16:25:19.296 14590-14590/? E/AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
01-07 16:25:19.296 14590-14590/? E/AndroidRuntime:     at org.androidtown.actionbar.MainActivity.onSensorChanged(MainActivity.java:167)
01-07 16:25:19.296 14590-14590/? E/AndroidRuntime:     at android.hardware.SystemSensorManager$SensorEventQueue.dispatchSensorEvent(SystemSensorManager.java:470)
01-07 16:25:19.296 14590-14590/? E/AndroidRuntime:     at android.os.MessageQueue.nativePollOnce(Native Method)
01-07 16:25:19.296 14590-14590/? E/AndroidRuntime:     at android.os.MessageQueue.next(MessageQueue.java:143)
01-07 16:25:19.296 14590-14590/? E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:122)
01-07 16:25:19.296 14590-14590/? E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5292)
01-07 16:25:19.296 14590-14590/? E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method)
01-07 16:25:19.296 14590-14590/? E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:372)
01-07 16:25:19.296 14590-14590/? E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:908)
01-07 16:25:19.296 14590-14590/? E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:703)

안드로이드초보입문 (220 포인트) 님이 2016년 1월 7일 질문

1개의 답변

0 추천
뷰페이저를 이용해 각 탭에 해당하는 페이지를 보이고 있으시군요...

해당 TextView 그러니까 R.id.RdegText 가 실제로 없어서 생기는 오류 갔습니다.

올리신 소스의 주석에도 보면 해당 뷰는 프레그먼트1 이라고 되어있네요...

오류 발생 조건이 3번 탭을 누르셨을때라고 하셨으니...

당연히 1번 프레그먼트 즉 R.id.RdegText 를 가지고 있는 프레그먼트는 detach 했겠지요...

그러니 findView 를 했을 때 null을 반환했을껍니다.

 

요약하면 해당 화면(탭)에 맞게 데이터를 처리하도록 수정하시면 될 것 같습니다.
비애천사 (12,080 포인트) 님이 2016년 1월 8일 답변
...