【发布时间】:2012-06-21 03:51:26
【问题描述】:
我有一个活动显示一些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);
【问题讨论】:
-
视图出现的顺序由 XML 定义。如果您在 XML 中定义了一个视图,但从未创建该对象的 java 实例,它仍然会出现。您将无法在您的 java 代码中与它进行交互。
-
更新中的代码行不能导致您在上面粘贴的异常。在例外情况下,您将
Spinner转换为Button在代码中您将View转换为Spinner。 -
我明白这一点。但是将我的 Spinner 从底部移动到顶部会使其崩溃,但我的代码显然不是按钮,这导致我假设有一些顺序,或者需要是
-
这可能是一个复制和粘贴错误,您在 JAVA 中加载视图的顺序对它们在您的活动中的显示方式没有影响。
-
嗯,这回答了我的问题。但我不明白它是如何复制和粘贴错误的。我将它复制并粘贴到根目录中,就像其他人一样在