2012-05-04 14 views
0

私はListActivityにスピナーを使用し、NullPointerExceptionsetAdapterという方法で取得します。私はgoogleとstackoverflowで同様の問題を研究しようとし、彼らのアドバイスを試みたが役に立たなかった。しかし、このコードは私の別のアプリで動作します。NullPointerException - スピナーを使用

options = getResources().getStringArray(R.array.options_array); 
Spinner s1 = (Spinner) findViewById(R.id.spinner1); 

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

s1.setAdapter(adapter); // Here is the error 
s1.setOnItemSelectedListener(new OnItemSelectedListener() 
    { 
     @Override 
     public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) 
     { 
      int index = arg0.getSelectedItemPosition(); 
      Toast.makeText(getBaseContext(), 
       "You have selected item : " + options[index], 
       Toast.LENGTH_SHORT).show();     
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> arg0) {} 
    }); 

マイスピナーXML

<Spinner  
     android:id="@+id/spinner1"  
     android:layout_width="25dip" 
     android:layout_height="25dip" 
      android:entries="@array/options_array" 
     android:prompt="@string/spin_prompt" 
     android:background="@drawable/expander_ic_maximized" 
     android:layout_alignParentRight="true" 
      android:layout_below="@id/name_text"   
     /> 

LogCat

05-04 09:23:48.492: ERROR/AndroidRuntime(343): Caused by: java.lang.NullPointerException 

05-04 09:23:48.492: ERROR/AndroidRuntime(343):  at com.amannain.android.missedcalls.MissedCallsSpinActivity.runSpinner(MissedCallsSpinActivity.java:31) 

05-04 09:23:48.492: ERROR/AndroidRuntime(343):  at com.amannain.android.missedcalls.MissedCallsSpinActivity.onCreate(MissedCallsSpinActivity.java:21) 

答えて

0

あなたのスピナーを定義したあなたのアクティビティに以下を設定していますか? setContentView(R.layout.main);
このmain.xmlはあなたのスピナーコンポーネントは、ID「spinner1」

+0

印刷s1を試してください。あなたはスピナーかオプションかどうかを知るために来るでしょう – sush

+0

ありがとうございました。あなたは正しい方向に私を指差した。私の場合のスピナーは、別のXMLで定義されていて、私の現在のアクティビティで使用しているsetContentView(R.layout.main)には定義されていません。それはなぜNullPointerExceptionです。 CursorAdapterを使用してListViewを埋めているので、ここでスピナーコードをシフトしました。 – Harry

0

これらのいくつかの変更は、私がある(オプションの値を考える..あなたに

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

Here instead of ArrayAdapter you can use SpinnerAdapter, Please modify your code and let me know. 
0

を助けるかもしれません渡されたArrayAdapter)がnullになります。 log-catの "options"の値を表示してみてください。

+0

これは、オプション値がstrings.xmlから読み込まれているためではありません。この同じコードは別のアプリでも動作します。 – Harry

2
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
android.R.layout.simple_spinner_dropdown_item, **options**); 

あなたのオプション値がnullですので、あなたがNullPointerExceptionを取得すると規定されている必要があります。 optionsの値を確認してください。

+0

私は両方の方法を試しました。配列値をXMLからロードするだけでなく、コードを使用して埋めます。どちらも間違っていた。 options = getResources()。getStringArray(R.array.options_array); \t \t options = new String [] {"デフォルト"、 "カンボジア語"、 "中国語"、 "韓国語"}; – Harry

関連する問題