2017-12-06 17 views
0

이상한 문제가 있습니다. 2 개의 미리 정의 된 스피너가 xml에 있습니다. 그러나 항목 및 관련 드롭 다운 항목은 런타임에 렌더링됩니다.getApplicationContext 및 Activity 컨텍스트가 왜 다른 스타일의 스피너를 부 풀리 느냐?

그러나 다음 두 명령문은 레이아웃 결과가 다릅니다. 나는 결과가 왜 이와 같은지 전혀 모른다. 그러나 가장 큰 차이점은 getApplicationContext() 및 @MikeM으로 Strange text color

+0

아마도 appcompatactivity (this)에는 테마 app compat이 있습니다. 주 애플리케이션 테마는 getapplicationcontext를 호출 할 때만 사용됩니다. –

+0

''요소에 테마를 설정할지라도 애플리케이션의 'Context'에는 실제로 테마가 없습니다. 그것은 단지 활동의 기본 테마를 설정합니다. –

+0

활동 클래스는 FragmentActivity로 확장되며 manfiest.xml에는 응용 프로그램 테마가 없습니다. manifest.xml에서 응용 프로그램 테마를 사용하지 않으면 기본 테마가 무엇인지 알고 싶습니다. –

답변

0

ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), 
     android.R.layout.simple_spinner_item, getSrvNumList()); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

Normal layout

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
     android.R.layout.simple_spinner_item, getSrvNumList()); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
this입니다. 댓글을 달았습니다. 문맥에 관한 문제입니다. 다음 문제는이 문제와 관련하여 도움이 될 수 있기를 바랍니다.

사용 Activity 컨텍스트 대신 Application 상황

ArrayAdapter<String> adapter = new ArrayAdapter<String>(MyActivity.this, 
     android.R.layout.simple_spinner_item, getSrvNumList()); 

그렇지 않으면, 응용 프로그램은 스피너를 렌더링하는 다른 테마를 얻을 것이다.