2017-11-13 10 views
-5

onClick(View view)에서 만들었을 때 항상 호스트 액티비티 객체를 제공하는 것은 아닙니다.getContext의 return 객체

그래서 view.getContext()에서 onClick(View view)ContextThemeWrapper 개체를 반환 할 때 또는 호스트 활동 개체 또는 다른 개체를 반환 할 때?

+0

'Context' 구현이 반환되는 것은 정말로 중요한 일입니까? 너는 그것을 무엇에 사용하기를 원합니 까? – pskink

+0

예, 내 요구 사항에 따라 onClick 메서드에서 호스트 활동 만 사용하려고합니다. –

+0

그래서 당신은 그것을 할 수 없거나 당신의 요구 사항을 바꿀 수 없습니다 ... btw 왜 당신이 얻는 문맥이 정말로 중요한가? 너는 그걸로 무엇을하고 싶니? – pskink

답변

0

컨텍스트는 응용 프로그램 환경에 대한 전역 정보에 대한 인터페이스입니다.

액티비티 클래스는 ContextThemeWrapper를 확장합니다. 액티비티를 매개 변수로 사용하려면 컨텍스트를 액티비티로 캐스팅하거나 구성 요소 사이에 인터페이스를 만들어야합니다. 당신이 소스 코드를 읽을 필요가 이유를 알고 싶다면

: 라인 758에서 https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/java/android/view/LayoutInflater.java

:

if (themeResId != 0) { 
    context = new ContextThemeWrapper(context, themeResId); 
} 

그리고 라인 (908)에

:

if (hasThemeOverride) { 
     context = new ContextThemeWrapper(context, themeResId); 
} 

겠어요 - .. 매개 변수로 활동을 전달하려면 컨텍스트를 사용하지 않아야합니다.

+0

하지만 때때로 ContextThemeWrapper 객체를 제공하는 이유와 Host activities 객체를 제공하는 이유에 대해서는 설명하지 않습니다. –

+0

아니요 아직 보지 못했습니다. 무언가를 알고 계신가요? –

+0

@pskink 나는 링크를 보았습니다. 그러나 소스 코드를 보지 못했습니다. 소스 코드를보고 뭔가 발견 한 경우 말해주십시오. –