안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요. 파일 2개에서 전역변수를 사용하려고 application class 를 만들었거든요.
매니페스트에서 이름도 설정했구요.
public class MyApp extends Application{
String str;
}
aaa.java
public class SmsDemo extends Activity {
...
}
bbb.java
public class SmsReceiver extends BroadcastReceiver{
...
}
aaa.java에서는 ((MyApp)getApplicationContext()).str = "";
이런식으로 하면 되는데
bbb.java에서는
"The method getApplicationContext() is undefined for the type SmsReceiver"
이런 에러가 나네요...bbb.java는 activity를 상속받지 않아서 안되는 건가요??
도움 좀 주시면 감사하겠습니다.
2011.03.08 21:55:28
이렇게 하심 될듯 하군요 다만 어플리케이션 생명주기상 어플리케이션 인스턴스가 생성되지 않았는데
브로드캐스트가 호출될 수 있을지는 모르겠네요 만약 그렇게 되면 널포인트예외가 뜰것 같네요
흠 그리고 브로드캐스트 리시버에서는 사실상 오버라이드 메서드밖에 쓸일이 없을텐데 오버라이드 메서드들에
대부분이 콜백 파라미터로 Context 인스턴스가 넘어올텐데요 그거 이용하시면 될듯합니다.
private static MyApplication sApplication;
public void onCreate() {
super.onCreate();
sApplication = this;
}
public static MyApplication getMyApplication() {
return sApplication;
}
}




BroadcastReceiver 에서 getApplicationContext() 호출하시면.. SmsReceiver.this.getApplicationContext() 가 호출될꺼 같네요.