NullPointerException - 使用微调器

时间:2012-05-04 11:09:22

标签: android

我在ListActivity中使用微调器并在NullPointerException方法下获得setAdapter。我试图在谷歌和stackoverflow上研究类似的问题,并尝试了他们的建议但没有用。但是,此代码适用于我的另一个应用程序。

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)

4 个答案:

答案 0 :(得分:2)

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

由于您的选项值为null,因此您获得了NullPointerException。检查options值。

答案 1 :(得分: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.

答案 2 :(得分:0)

我认为选项中的值(传递给ArrayAdapter)是空的。尝试在log-cat中查看“options”的值。

答案 3 :(得分:0)

您是否在定义了微调器的活动中设置了以下内容    的setContentView(R.layout.main);
   这个main.xml应该使用id“spinner1”

定义你的微调器组件