您的视图在XML中的位置是否必须与您的活动中的代码相匹配?

时间:2012-06-20 19:37:56

标签: android xml spinner

我的活动显示了一些TextViewEditText以及DatePickerTimePicker 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);

3 个答案:

答案 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的代码之间没有关系。