2017-12-06 3 views
0

Ich habe ein seltsames Problem. Ich habe 2 vordefinierte Spinner in der XML. Das Element und das zugehörige Dropdown-Element werden jedoch zur Laufzeit gerendert.Warum der Kontext von getApplicationContext und Activity den Stil des Spinner aufblasen?

Die folgenden 2 Anweisungen liefern jedoch unterschiedliche Ergebnisse des Layouts. Ich habe keine Ahnung, warum das Ergebnis so ist. Aber der Hauptunterschied ist getApplicationContext() und this

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

Normal layout

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

Strange text color

+0

Vielleicht appcompatactivity (this) hat das Thema app compat. Ihr Hauptanwendungsthema wird nur verwendet, wenn Sie getapplicationcontext aufrufen –

+0

Eine Anwendung 'Context' hat nicht wirklich ein Thema, obwohl Sie möglicherweise ein Element auf das' ' Element setzen. Dadurch wird nur ein Standardthema für die Aktivitäten festgelegt. –

+0

Die Aktivitätsklasse wurde auf FragmentActivity erweitert, und in manfiest.xml gibt es kein Anwendungsthema. Ich möchte wissen, was das Standardthema ist, wenn ich kein Anwendungsthema in manifest.xml verwende. –

Antwort

0

Als @MikeM. kommentiert, ist es das Problem über den Kontext. Hoffe die folgende Antwort kann jemandem mit diesem Problem helfen.

Verwendung Activity Kontext statt Application Kontext

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

Andernfalls wird die Anwendung anderes Thema erhalten die Spinner zu machen.

Verwandte Themen