0

我在我的中使用了一个微调器ListActivity并获得了一个NullPointerExceptionatsetAdapter方法。我试图在 google 和 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"        
        />  

日志猫

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

4 回答 4

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

因为您的 options 值是null,所以您得到NullPointerException. 检查options值。

于 2012-05-04T12:49:52.667 回答
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.
于 2012-05-04T11:27:33.843 回答
0

我认为选项(通过 ArrayAdapter)中的值将变为空。尝试在 log-cat 中查看“选项”的值。

于 2012-05-04T11:35:40.187 回答
0

您是否在定义微调器 setContentView(R.layout.main) 的活动中设置以下内容;
这个 main.xml 应该有你的微调组件定义为 id "spinner1"

于 2012-05-04T12:32:09.087 回答