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

실행되지 않은 activity의 context 불러오기

0 추천

여러 activity에서 alarmmanager로 알람을 설정하고, 알람관리하는 메뉴에서 이 알람들을 취소할수 있도록 하기 위해서,알람을 설정한 activity들의 context를 불러오려고 합니다. 

그런데 다른 activity의 context에 접근하는 과정에서 문제가 있어요.

AActivity에서는

private static Context context;

@Override
public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 context=getApplicationContext();
...
}

public static Context getAppContext(){ 
 return context;
}

이렇게 함수를 만들었고, BActivity에서는

Context context = AActivity.getAppContext();
final AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent=new Intent(context,AlarmReceiver.class);
intent.putExtra("message", msg);
final PendingIntent pIntent=PendingIntent.getBroadcast(context, alarm_idx,intent,PendingIntent.FLAG_UPDATE_CURRENT);

이렇게 불러왔어요.

 

근데 앱 실행후 한번이라도 AActivity에 들어갔다가 나왔으면 잘 불러와지지만, AActivity에 들어가지 않고 바로 BActivity로 왔을 경우에는 context에서 NullPointerException이 생깁니다. 해결책이 없을까요?

 

 

리히트 (1,450 포인트) 님이 2015년 7월 31일 질문
리히트님이 2015년 7월 31일 수정

2개의 답변

0 추천
 
채택된 답변
BActivity도 context 갖고 있는데 왜 저걸 다른 액티비티에서 구해오죠?

그냥 this를 쓰거나 getApplicationContext를 쓰세요.
쎄미 (162,410 포인트) 님이 2015년 8월 3일 답변
리히트님이 2015년 8월 4일 채택됨
답변 감사합니다. 제가 context에 대해 착각하고 있었어요...
0 추천
onCreate 가 호출 안된 상태이기 때문에, null이 나올 수 밖에 없습니다.
그리고..
getSystemService 의 경우 SystemService 객체를 받아오는 것으로,
굳이 다른 Activity의  Context를 구하실 필요가 없습니다.
 
익명사용자 님이 2015년 7월 31일 답변
소스코드 좀더 추가했는데요, SystemService외에도 intent와 pendingintent에서도 context를 이용해야해서요...
...