使用android 写一个Spinner 的demo 就报异常了。没查出来。
09-23 03:08:00.582: ERROR/AndroidRuntime(265): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.hkrt.action/com.hkrt.action.LessonActivity}: java.lang.ClassCastException: android.widget.TextView09-23 03:08:00.582: ERROR/AndroidRuntime(265): Caused by: java.lang.ClassCastException: android.widget.TextView
这是主要的异常。但我们没有类型转换啊。
代码如下:public class LessonActivity extends Activity {
    @SuppressWarnings("unchecked")
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
                Spinner spinner = (Spinner)findViewById(R.id.spinner);
                //准备一个数组适配器
                ArrayAdapter adapter = ArrayAdapter.createFromResource(
                        this, R.string.colors, android.R.layout.simple_spinner_item);
                //设置下拉样式
                adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                //为下拉列表设置适配器
                spinner.setAdapter(adapter);
                //定义子元素选择监听器
                OnItemSelectedListener oisl=  new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View arg1,
int position, long arg3) {
Toast.makeText(LessonActivity.this,"选择的色彩: " +parent.getItemAtPosition(position).toString(), Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
                };
                //为下拉列表绑定事件监听器
                spinner.setOnItemSelectedListener(oisl);
    }
}
string.xml<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">Lesson2</string>
    <string name="color">选择色彩:</string>
    <string name="colors" >
        <item>黑色 | Black</item>
        <item>蓝色 | Blue</item>
        <item>棕色 | Brown</item>
        <item>绿色 | Green</item>
        <item>灰色 | Grey</item>
        <item>粉色 | Pink</item>
        <item>紫色 | Purple</item>
        <item>红色 | Red</item>
        <item>白色 | White</item>
        <item>黄色 | Yellow</item>
    </string>
</resources>

解决方案 »

  1.   

    问题出在你的string.xml上,你定义的colors数组应该另外建一个xml重新定义为:
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string-array name="colors">
           <item>黑色 | Black</item>
            <item>蓝色 | Blue</item>
            <item>棕色 | Brown</item>
            <item>绿色 | Green</item>
            <item>灰色 | Grey</item>
            <item>粉色 | Pink</item>
            <item>紫色 | Purple</item>
            <item>红色 | Red</item>
            <item>白色 | White</item>
            <item>黄色 | Yellow</item>    </string-array>
    </resources> 
    而相应的
     ArrayAdapter adapter = ArrayAdapter.createFromResource(
                            this, R.array.colors, android.R.layout.simple_spinner_item);
    如果你改完还不对的话,把你的main.xml代码贴出来看看。
      

  2.   

    按你这样的改了。也通过以上引用了。但还是启动时就报错了。
    main.xml 如下<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
    <TextView  
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="@string/color"
        >
         <Spinner 
          android:id="@+id/spinner"
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:text="@string/color"
         />
     </TextView>
    </LinearLayout>
      

  3.   

    <TextView  
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="@string/color"
        >
         <Spinner 
          android:id="@+id/spinner"
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:text="@string/color"
         />
     </TextView>
    这句错了,你怎么把Spinner控件定义到TextView里面去了,改成这样
    <TextView  
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="@string/color"
        >
     </TextView>
      <Spinner 
          android:id="@+id/spinner"
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:text="@string/color"
         />低级错误