2012-03-09 6 views
4

私はスピナーを使って国IDを表示しています。私はアプリを実行し、スピナーをクリックするまですべてがうまくいくようだ。スピナーをクリックすると、アプリがクラッシュします。ここでスピナーはアンドロイドアプリケーションをクラッシュさせます

(これは便利であれば、のLinearLayoutの内側にある)私のスピナーXMLコードです:

<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); 

はまた、これはcountries_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) 

私は利用可能なすべての記事を読みましたが、誰も私の問題を解決しませんでした。

事前に感謝します。

+0

感謝を参照することができます。また

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

下のような行を変更し 現在のアクティビティを使用しての親アクティビティのコンテキスト!すべてのgetApplicationContext()を** this **に変更する必要がありました。 – tcp

答えて

4

getApplicationContext()の代わりにYourActivityName.thisContextとしてアダプターに渡すことをお勧めします。

ActivityGroupまたは簡易Activityを使用していますか?

ActivityGroupを使用している場合、不正なウィンドウトークンの問題を引き起こす可能性があります。 ActivityGroup

+1

返信をお待ちしています。私はちょうどこれにすべてのgetApplicationContext()を変更しなければならなかった! – tcp

+0

この回答は私のために働いていません。私は、タブアクティビティグループに含まれるアクティビティの中にスピナーを持っています。どうすればいいですか? –

+0

@PramodJGeorgeあなたは 'this.getParent()'を使ってみるべきです、この投稿を見てください:[ActivityGroupの子どもの中のスピナーは動作しません](http://stackoverflow.com/a/6611796/ 593709)とこれは:[スピンナーをアクティビティグループの中に置いたときのエラー](http://stackoverflow.com/a/4/44485/593709) –

3

とポストアドレスの問題に続いてそれは、理由はあなたのコンテキストの

代わりのgetApplicationContext()あなたのAcを使用していますこの参照を使用しているtivityのコンテキスト

例:

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); 
+0

返信のための乾杯。私はちょうどこれにすべてのgetApplicationContext()を変更しなければならなかった! – tcp

0

ユーザーの代わりにあなたはすべての答えを、このlink

関連する問題