【问题标题】:Does the placement of your Views in XML have to match your code in your Activity?您的视图在 XML 中的放置是否必须与您的活动中的代码相匹配?
【发布时间】: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 中加载视图的顺序对它们在您的活动中的显示方式没有影响
  • 嗯,这回答了我的问题。但我不明白它是如何复制和粘贴错误的。我将它复制并粘贴到根目录中,就像其他人一样在

标签: android xml spinner


【解决方案1】:

请注意,当您更改布局时,有时 Eclipse 不会重建资源,并且您会留下与 XML 声明的 Viewsids /em>。一个完整的清洁和重建应该照顾它。

【讨论】:

  • 有趣。我会试试的。但是如果 id 没有改变呢?
  • @Andy:还是一样的情况,你的资源不同步。似乎 aapt 工具仅部分运行,我不确定,但无论哪种情况,它都是工具中的错误。
  • 嗯,你的回答似乎最有意义。出于某种原因,它认为我正在尝试将 Button 转换为 Spinner。有趣的。和烦人。如何进行全面清理和重建?
  • @Andy: Project > Clean 并选择您的项目。如果 Build automatically 已启用,那么这就足够了,否则您需要执行 Build
  • 完美!就像你说的那样有效。我想我很高兴我偶然发现了这个奇怪的故障。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    问题是您试图将Spinner 转换为Button

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

    Button myButton = findViewById(R.id.mySpinnerID)
    

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-17
      • 1970-01-01
      • 2015-02-06
      相关资源
      最近更新 更多