2013-05-03 3 views
24

Текст на моих прядильщиках белый, и я понятия не имею, почему.Текст на прядильщике белый на белом фоне

enter image description here

Это мой XML, ничего особенного

<Spinner 
    android:id="@+id/spinner_date" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" /> 

И мой код

dateSpinner = (Spinner) findViewById(R.id.spinner_date); 
selectedDate = calendar.getTime(); 
List<String> list = new ArrayList<String>(); 
list.add(formatter.format(selectedDate)); 
dateAdapter = new ArrayAdapter<String>(mContext, 
      android.R.layout.simple_spinner_item, list); 
dateSpinner.setAdapter(dateAdapter); 

Что может быть причиной того, что мой текст отображается в белом?

EDIT: Я нашел причину, я заменил параметр mContext, который был установлен в моем onCreate.

mContext = getApplicationContext(); 

Теперь я использую D

ateAdapter = new ArrayAdapter<String>(this, 
       android.R.layout.simple_spinner_item, list); 

и она работает.

+2

Тьфу, у меня была такая же проблема, и это потому, что кто-то 'ArrayAdapter.createFromResource (\t \t \t this.getActivity(). GetApplicationContext(), \t \t \t R.array.security_questions, \t \t \t android.R.layout.simple_spinner_item) 'вместо' ArrayAdapter.createFromResource (\t \t \t this.getActivity(), \t \t \t R.array.security_questions, \t \t \t android.R.layout.simple_spinner_item) ' getApplicationContext() определенно закручивает нас, приложение должно иметь другую тему, чем активность? – Jeff

+0

Огромное спасибо! После долгого поиска я нашел ваше сообщение и смог решить мою проблему. – Antiohia

ответ

84

У меня такая же проблема и нашла ответ. Вы не использовать контекст приложения, а не просто использовать getActivity() (если вы в фрагменте), либо это (если вы в деятельности), он будет работать

dateAdapter = new ArrayAdapter<String>(**this**, 
     android.R.layout.simple_spinner_item, list); 
+0

Я использую 'SimpleCursorAdapter', но это не исправило мою проблему. Есть идеи? – AdamMc331

+0

awesome solution –

+0

@Le Хунг вы правы, когда мы используем это вместо контекста getApplication, он выглядит очень красиво. Но когда мы используем getApplicationContext, все выглядит в ушах. Спасибо чувак. –

1

Может быть, у вас есть белый android:textColor="@android:color/white" атрибута в вашем simple_spinner_item.xml в макете папки вашего проекта.

Лучше использовать собственный макет элемента с прядильщиком с хорошим атрибутом android:textColor="@android:color/COLOR_YOU_WANT_TO_USE".

+1

simple_spinner_item исходит от android, а не от проекта ... Я не уверен, что это редактируется? – Jeff

1

У меня также была та же проблема, что это из моей темы приложения , Что я решил, заменив

android.R.layout.simple_spinner_item 

с

android.R.layout.simple_list_item_1 

в моем ArrayAdapter. Я надеюсь, что это может решить вашу проблему

1

я изменить его с

new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_item, some_list); 

в новый ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, list);

это фиксируется, хотя я не хочу использовать «это»

9

Я решил эта проблема с использованием

getBaseContext() 

вместо

getApplicationContext() 
+0

getBaseContext() решить мою проблему –

+0

yes Я использовал ArrayAdapter внутри расширенного класса AsyncTask .. и с той же проблемой ... getBaseContext() работает для меня .. –

+0

Это решило мою проблему –