안드로이드 개발 질문/답변
(글 수 45,052)
getResources() 를 써야 하는데
Activity 가 아닌 클래스에서 호출 하려면 어찌 하는지요?
일반 클래스에서 android 라이브러리 import 해도 쓸 수가 없던데
아시는분 계시나요?
2010.06.01 18:52:34
클래스 생성시 생성자에서 Context 를 받게한후
a = new A(this); this 는 Context
public class A {
Context mContext;
public A( Context context) {
mContext = context;
mContex, getResources();
}
2011.08.23 18:25:17
getResources()메서드는 추상클래스인 Context에 추상 메서드으로써 이런 상속 관계를 가지고 있습니다.
ListActivity -> Activity -> ContextThemeWrapper -> ContextWrapper -> ContextWrapper -> Context
즉, Activity 상속받아 구현하셨다면 자기 자신이 Context가 되는 겁니다.
그래서 다른 클래스에서 사용하실려면 자기 자신(this)을 인자값으로 넘겨 주시면 됩니다.
다른 클래스에서 받을때 클래스 타입은 Context가 되겠죠!!
그런데 가끔 getResources()관련해서 인자값으로 넘겨줘도 다른 클래스에서 사용하면 에러가 난다는 글들이 있습니다.
그 이유는 구현한 클래스가 Context관련 클래스를 상속받아 구현한 클래스가 아닌데 this을 넘겨 주거나
또는 onCreate() 메서드가 호출 되기전에 멤버 변수에 다른클래스 메서드를 호출하고 this를 넘겨준다거나
객체가 소멸(destory)됐는데 호출한 경우 런타임 에러가 발생합니다.
에러 발생시 이런 문제가 없는지 체크 하시기 바랍니다.