0

我有一个显示一些TextViews 和EditTexts 以及DatePickers 和TimePickers 的活动。现在我正在添加一个Spinner,它几乎接近底部,就像我的代码在onCreate()它中一样。当我点击 Spinner 时,它会弹出来,可能是因为它靠近底部并且没有足够的空间。所以我想我会在它位于顶部时对其进行测试。但它失败了。错误是:

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);

4

3 回答 3

1

请注意,当您更改布局时,有时Eclipse不会重建资源,并且您留下的id与其 XML 声明的Views不匹配。完全清洁和重建应该照顾它。

于 2012-06-20T19:45:48.337 回答
0

问题是您正试图SpinnerButton

我想你有一些看起来像这样的代码:

Button myButton = findViewById(R.id.mySpinnerID)

相反,它应该看起来像这两行之一:

Spinner mySpinner = findViewById(R.id.mySpinnerID)
Button myButton = findViewById(R.id.myButtonID)

在创建与 .xml 中的视图相对应的 java 对象时,您必须确保为相应的视图创建正确的对象类型。

于 2012-06-20T19:40:25.537 回答
0

该错误几乎是不言自明的。您正在尝试将Spinner对象转换为Button对象。只是为了确认您的视图在 XML 中的位置与访问该 XML 的代码之间没有关系。

于 2012-06-20T19:41:25.507 回答