Spinner делает сбои приложений для Android

Я использую счетчик, чтобы показать идентификатор стран. Все кажется прекрасным до тех пор, пока я не запустил приложение и не нажму на счетчик. После того, как я нажимаю на spinner, приложение падает.

Вот мой xml-код spinner (который находится внутри LinearLayout, если это полезно):

<Spinner style="@style/mediumBlackDefault" android:id="@+id/spinner" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="4" /> 

И вот как я его заполняю:

 Spinner spinner = (Spinner) findViewById(R.id.spinner); ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( getApplicationContext(),R.array.countries_array, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

Также это country_array:

 <string-array name="countries_array"> <item>AE</item> <item>AF</item> <item>AG</item> <item>AI</item> <item>AL</item> <item>AM</item> </string-array> 

Наконец, я получаю следующие ошибки:

 03-09 11:39:36.944: E/AndroidRuntime(990): FATAL EXCEPTION: main 03-09 11:39:36.944: E/AndroidRuntime(990): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application 03-09 11:39:36.944: E/AndroidRuntime(990): at android.view.ViewRootImpl.setView(ViewRootImpl.java:519) 03-09 11:39:36.944: E/AndroidRuntime(990): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:279) 03-09 11:39:36.944: E/AndroidRuntime(990): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:193) 03-09 11:39:36.944: E/AndroidRuntime(990): at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:118) 03-09 11:39:36.944: E/AndroidRuntime(990): at android.app.Dialog.show(Dialog.java:274) 03-09 11:39:36.944: E/AndroidRuntime(990): at android.app.AlertDialog$Builder.show(AlertDialog.java:932) 03-09 11:39:36.944: E/AndroidRuntime(990): at android.widget.Spinner$DialogPopup.show(Spinner.java:672) 03-09 11:39:36.944: E/AndroidRuntime(990): at android.widget.Spinner.performClick(Spinner.java:435) 03-09 11:39:36.944: E/AndroidRuntime(990): at android.view.View$PerformClick.run(View.java:13983) 03-09 11:39:36.944: E/AndroidRuntime(990): at android.os.Handler.handleCallback(Handler.java:605) 03-09 11:39:36.944: E/AndroidRuntime(990): at android.os.Handler.dispatchMessage(Handler.java:92) 03-09 11:39:36.944: E/AndroidRuntime(990): at android.os.Looper.loop(Looper.java:137) 03-09 11:39:36.944: E/AndroidRuntime(990): at android.app.ActivityThread.main(ActivityThread.java:4340) 03-09 11:39:36.944: E/AndroidRuntime(990): at java.lang.reflect.Method.invokeNative(Native Method) 03-09 11:39:36.944: E/AndroidRuntime(990): at java.lang.reflect.Method.invoke(Method.java:511) 03-09 11:39:36.944: E/AndroidRuntime(990): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 03-09 11:39:36.944: E/AndroidRuntime(990): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 03-09 11:39:36.944: E/AndroidRuntime(990): at dalvik.system.NativeStart.main(Native Method) 

Я прочитал все сообщения, и никто не решил мою проблему.

Спасибо заранее!

Я бы предложил вам попробовать передать YourActivityName.this вместо getApplicationContext() качестве Context для вашего адаптера.

Вы используете ActivityGroup или простое действие?

Если вы используете ActivityGroup , это может вызвать проблему плохого токена окна. После почтового адреса проблема с ActivityGroup

  • Ошибка при размещении счетчика внутри группы действий
  • Spinner внутри Child of ActivityGroup не работает
  • Проблема со счетчиком в пользовательском списке внутри группы действий
  • Android: WindowManager $ BadTockenException на Spinner Click

Это из-за вашего контекста,

Вместо getApplicationContext() используйте контекст вашей деятельности, используя эту ссылку

Например.

 ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( activity.this,R.array.countries_array, android.R.layout.simple_spinner_item); 

Или если вы используете группы действий, укажите контекст вашей группы действий.

Например.

 ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( activity.group,R.array.countries_array, android.R.layout.simple_spinner_item); 

Пользователь контекст родительской активности вместо использования текущего действия. Измените строку, как показано ниже.

 ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( getParent(), R.array.countries_array, android.R.layout.simple_spinner_item); 

Также вы можете ссылаться на эту ссылку