2013-06-04 1 views
2

방금 ​​안드로이드 프로그래밍을 배우기 시작했고 getResources() 메소드에 대한 의문을 갖게되었습니다.
Resources res = getResources();
첫 번째 의심의 여지가있는 왜 그런 식으로 어떻게해야합니까 내가 자바 키워드 새로운을 사용해서는 안 다음 나는 내가 자원 객체를 만들 때 내가 할 일은입니다 것으로 나타났습니다? 이런 식으로하면 안됩니다 :
Resources res = new Resources();
두 번째 질문은 다음과 같습니다. 파일 상단에서 Resources 클래스를 가져 왔습니다.
import android.content.res.Resources;
이제 android api를 읽고 getResources()가 추상 추상 클래스 인 경우 public abstract 메서드라고 말합니다. 정적으로 선언되지 않은 경우 간단히 getResources()를 호출하여 호출 할 수 있습니까?getResources() 구현 안드로이드

답변

3

귀하의 활동이 클래스 android.app.Activity 한 차례 연장 등 발사 활동, 방송 수신 의도,뿐만 아니라 업 호출 응용 프로그램 수준의 작업, 응용 프로그램 별 자원과 클래스에 액세스 할 수 있습니다 클래스 android.content.Context (클래스 계층 구조의 세 수준 위로)을 확장합니다. 클래스 Context은 추상 메소드 getResources()을 선언합니다. 즉, 액티비티 서브 클래스가 해당 메소드를 상속받으며 onCreate() 메소드 (예 :)에서 호출 할 수 있습니다.

메서드는 Context 클래스에서 추상으로 선언되었지만 클래스 계층 구조의 중간 클래스 중 하나 (android.view.ContextThemeWrapper)는이 메서드에 대한 구현을 제공합니다.

또한 이는 Resources 개체를 만드는 것이 사용자의 책임이 아니라는 것을 의미합니다. 대신 프레임 워크에 의해 수행됩니다.

+0

안녕하세요 @devconsole. ContextThemeWrapper.java 소스를 살펴 보았고'getResources()'메소드의 구현을 찾지 못했습니다. super.getResources()를 호출하는 메소드'getResources()'만 오버라이드된다. 'getResources()'를 구현하는 또 다른 클래스에 대해 알고 있습니까? 감사. – janzoner

+0

제 질문 [here] (http://stackoverflow.com/q/23933397/3343299)도 참조하십시오. – janzoner

+0

@janzoner 요점은'ContextThemeWrapper'는'Activity'가 상속하는'getResources()'의 구현을 제공합니다. 원래 질문에 대한 답변입니다. 그래서 내 대답에 무슨 문제가 있니? – devconsole

1

getResources는 실제로 컨텍스트에서 액세스 할 수있는 방법입니다. 그래서 당신은 정말 생각할 수있는이 :

getResources() 

http://developer.android.com/reference/android/content/Context.html#getResources%28%29

:

context.getResources() 

귀하의 활동 클래스는 그냥 구문을 호출 할 수 있습니다 이유는이 경우에 상황이며, 해당 문서의 내용 :

응용 프로그램 환경에 대한 글로벌 정보에 대한 인터페이스. 이 은 구현이 Android 시스템에서 제공되는 추상 클래스입니다. 그것은

+0

편집하기에는 너무 늦었습니다. 응답은 어쨌든 그 대답으로 업데이트되었습니다. 설명 주셔서 감사합니다! –