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

broadcastReceiver 동작에서 실행되지 않은 Activity 정보를 수정할 때..

0 추천

자꾸 널 오류가 납니다.

현제 MainActivity 와 broadcastReceiver 동작 하는 2 개의 자바 파일이 있습니다.

MainActivity 를 실행시키고 broadcastReceiver를 동작 시킬때는 아무 문제 없습니다.

 

 하지만 핸드폰을 껏다 킬 때 broadcastReceiver 혼자 동작 하더니 에러가 나면서 사용하지도 않은 앱이 종료가 되어버립니다.

 

소스는 대강 이렀습니다.

mainfest에 broadcastReceiver를 계속 돌려 네트워크 변화가 있으면 감지한다.!

변화가 있다면 MainActivity 에서 public static 으로 선언한 String 변수와 TextView 객체를 사용한다.

ex ) MainActivity extends Activity {

public static String NetworkTxt = "연결안됨";

public static TextView NetworkTxt;

~onCreate에서.. ~NetworkTxt= (TextView) find~~~  변수 초기화

 

public static TextChange() {2

  tv.setText(NetworkTxt);3 Error!!!!! 널포지션 널 값 에러!!

}

}

 

extend broadcastReceiver {

Receiver(~~) {

MainActivity.NetworkTxt = "연결됨";

MainActivity.TextChange(); 1

 

위와 같이 구성되어있을 때 폰을 키면 자동적으로 브로드캐스트가 동작하여 Main.NetworkTxt 에 값을 넣습니다. 

 

그럼 위 순서대로 타다가 에러가 발생합니다.

 

why?? 도대체 왜 그러는걸 까요?

 

아직 신입 개발자 입니다. 열심히 하고 있으니 도와주세용!~~~

 

 

minibot (120 포인트) 님이 2015년 12월 17일 질문

2개의 답변

0 추천
public static TextView NetworkTxt;

View나 Context와 연관된 것은 static field에 저장하면 안됩니다.
익명사용자 님이 2015년 12월 17일 답변
왜 안되는거죠?
private static 로도 view 나 context 담으면 안되나요??..
0 추천

static으로 view 나 context들을 선언하시면 안됩니다.

http://thinkingcookie.blogspot.kr/2011/02/android-context.html

에 설명이 잘되어있네요 참고바랍니다

 

 

poporo (3,960 포인트) 님이 2015년 12월 17일 답변
...