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

onReceive 안에서 객체를 선언해서 데이터를 가져오면 전부 Null 값으로만 되네요..방법이 없을까요?

0 추천
안녕하세요.
어플제작 초짜중 초짜입니다..
 
알람매니저를 사용한 어플을 제작하고 있습니다.
 
브로드캐스터리시버를 상속받아서 onReceive를 구현하는데 onReceive 메소드안에
 
데이터를 모아놓은 클래스를 객체로 선언해서 onReceive메소드를 가지고 있는 클래스의 변수에 대입하려고 합니다.
 
그런데 자꾸 Null값이 되네요.. 데이터 모아놓은 클래스에서 디버깅해서 값이 잘 들어왔나 확인하면 잘 들어왔는데
이상하게 onReceive 메소드 안에서 객체 데이터를 받아오면 Null 값으로밖에 안되네요..
 
왜그런지, 또 onReceive 메소드 안에서는 외부 클래스의 데이터를 어떻게 하면 받아올수 있는지 궁금합니다..ㅜㅜ
 
답변 부탁드리겠습니다 감사합니다 ㅜㅜ
 
아래는 문제의 소스부분입니다..
public class AlarmReceive extends BroadcastReceiver {
  private Data data= new Data();
 private static int mPosition;
 private ArrayList<String> mStr;
 @Override
 public void onReceive(Context context, Intent intent) {
  // TODO Auto-generated method stub
  
  mStr = data.getData();
  if(mStr == null)
   Log.i("2번null", "NULL!!!!!!!!!!!!!!");
  if(data.getData() == null)
   Log.i("2번Uri도 null!", "uri: NuLL!!!!!!!!");
 }
라낭구 (120 포인트) 님이 2013년 4월 7일 질문
mStr = data.getData().getString(키값);

1개의 답변

0 추천

안녕하세요.

소스를 보니 AlarmReceive 라는 클래에서 선언된는 data라는 함수에서 

getData()를 하네요..

receiver이 동작할때마다 private Data data= new Data(); 를 하고 여기서 값을 가저와서

아무 것도 없는 데이터가 불려오는 것 같습니다.

 

BroadcastReceiver 의 onReceiver() 함수의 인자인 intent에서 

intent.getExtra.... 를 이용하여 값을 가저와야 할 것 같네요.

물론 Broadcast해주는 intent에서 필요한 값들을 putExtra 해주서야하고요.

 

관련 url 알려드릴테니 참고하여 보세요.

-> http://androidhuman.tistory.com/125

 

앙드로이등 (850 포인트) 님이 2013년 4월 8일 답변
말씀대로 AlarmReceive 클래스의 onReceive 메소드에 Intent intent = getIntent(); 를 선언하였는데 getIntent에 빨간색 밑줄이 생기면서 오류가 생기네요..getIntent()가 정의되어있지 않다고요..ㅜㅜ

찾아봤는데 액티비티일때 getIntent()가 사용되는 걸로 알고 있는데 해결방법이 없을까요??
...