我的活动显示了一些TextView
和EditText
以及DatePicker
和TimePicker
s。现在我添加Spinner
,它几乎接近底部,就像我的代码在onCreate()
中一样。当我点击旋转器时,它会弹出,可能因为它靠近底部并且没有足够的空间。所以我想当它在顶部时我会测试它。但它失败了。错误是:
06-20 15:31:28.802: E/AndroidRuntime(980): java.lang.RuntimeException:
Unable to start activity ComponentInfo{com.zeroe/com.zeroe.AddEventActivity}:
java.lang.ClassCastException: android.widget.Spinner cannot be cast to
android.widget.Button
我不明白,但根据我的猜测,XML的位置应遵循代码的位置。我实际上将xml代码复制并粘贴到顶部,所以我知道我没有改变任何东西。这是一个规则,还是我犯了某种错误?感谢您提前输入。
编辑:
我的代码Spinner spinner = (Spinner)findViewById(R.id.reminder_spinner);
答案 0 :(得分:1)
请注意,当您更改布局时,有时 Eclipse 不会重建资源,而您将留下与其声明的 Views <不匹配的 ids / em>的。完全清洁和重建应该照顾它。
答案 1 :(得分:0)
问题是您正在尝试将Spinner
转换为Button
我想你有一些看起来像这样的代码:
Button myButton = findViewById(R.id.mySpinnerID)
相反,它应该看起来像这两行中的任何一行:
Spinner mySpinner = findViewById(R.id.mySpinnerID)
Button myButton = findViewById(R.id.myButtonID)
创建与.xml中的视图对应的java对象时,必须确保为相应的视图创建正确的对象类型。
答案 2 :(得分:0)
错误几乎是不言自明的。您正在尝试将Spinner
对象强制转换为Button
对象。只是为了确认,XML中的视图位置与访问该XML的代码之间没有关系。