클래스 파일 3개를 작성했습니다.
1. ListActivity 를 상속받은 Menu클래스
public abstract class Menu extends ListActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
prepareMenu();
.....(생략)
}
}
.....(생략)
abstract void prepareMenu();
}
2. Menu를 구현한 kimgTest클래스
public class kimgTest extends Menu {
void prepareMenu() {
}
}
3. 별도의 Activity클래스
public class AbsoluteLayoutTest extends Activity {
private String[] menuName = getResources().getStringArray(R.array.menu_name);
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
=====================================================================================
오전에 질문을 올렸는데 명쾌한 대답을 얻지 못해서 다시 자세히 질문 올립니다.
문제가 되는 구문이 private String[] menuName = getResources().getStringArray(R.array.menu_name); 이구문인데요...
getResources().getStringArray(R.array.menu_name); <-- 이구문이 위치에 따라 오류가 나요...
테스트결과
public abstract class Menu extends ListActivity {
private String[] menuName = getResources().getStringArray(R.array.menu_name); // 오류남
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
prepareMenu();
.....(생략)
}
}
.....(생략)
abstract void prepareMenu();
}
public class kimgTest extends Menu {
private String[] menuName = getResources().getStringArray(R.array.menu_name); // 오류남
void prepareMenu() {
}
}
public class AbsoluteLayoutTest extends Activity {
private String[] menuName = getResources().getStringArray(R.array.menu_name); //잘실행됩니다.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
아직 자바개념이 부족한것인지....ㅠ.ㅠ
↳ |
||||
|
↳ |
|||
|
|
↳ |
||
|
|
|
↳ |
android.app.Activity |
뭔가 착각하시는 것 같은데요..
등록하신대로 하시면.. ListActivity 뿐만 아니라 Activity에서도 되지 않습니다.
getResources()는 Activity가 생성이 되어야만 동작합니다.
빠른 답변 감사드립니다~~!!
그럼...
private String[] menuName = getResources().getStringArray(R.array.menu_name); 이렇게 했을경우
왜 런타임 오류가 나는지 궁금하네요??
예를 들면 이런식으로
public class XXX extend .......
{
private Context mContext;
public XXX(Context context)
{
mContext = context;
}
Drawable logo = mContext.getResources().getDrawable(R.drawable.android);
}
대충 쓴거라 맞는지 모르겠네요;; 대충 이런식으로 쓸수 있습니다.
위에 처럼 하지 마시고
private String[] menuName = null; // 그냥 선언 하시고
onCreate() 안에서
menuName = getResources().getStringArray(R.array.menu_name);
이렇게 해보세요.