【问题标题】:Weird ClassCastException: ImageView cannot be cast to ListView奇怪的 ClassCastException:ImageView 无法转换为 ListView
【发布时间】:2014-05-01 06:47:18
【问题描述】:

奇怪的 ClassCastException:无法将 ImageView 转换为 ListView。 在 xml 中,视图被声明为 ListView。当我按如下方式检索对象时:

private void initShareContextMenu() {
    ListView shareListITem = (ListView) findViewById(R.id.share_list);
    shareList = new ContextMenuList(shareListITem,
            (RelativeLayout) findViewById(R.id.content_wrapper), this);

    List<View> views = new ArrayList<View>();
    views.add(findViewById(R.id.share_btn));

    shareList.setViews(views);
}

我得到了 ClassCastException。尝试构建和清理项目,删除 gen/bin 文件夹,重命名控件但没有任何帮助。 布局如下:

<RelativeLayout
        android:id="@+id/content_wrapper"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <FrameLayout
            android:id="@+id/youtube_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@android:color/black" />

        <ListView
            android:id="@+id/share_list"
            android:layout_width="@dimen/share_context_menu_width"
            android:layout_height="wrap_content"
            android:divider="@color/share_list_divider"
            android:dividerHeight="1px"
            android:visibility="gone" />
    </RelativeLayout>


05-01 09:40:45.215: E/MessageQueue-JNI(18500): Exception in MessageQueue callback: handleReceiveCallback
05-01 09:40:46.096: E/MessageQueue-JNI(18500): java.lang.ClassCastException: android.widget.ImageView cannot be cast to android.widget.ListView
05-01 09:40:46.096: E/MessageQueue-JNI(18500):  at com.packagename.ui.activities.VideoPlayerActivity.initShareContextMenu(VideoPlayerActivity.java:1394)
05-01 09:40:46.096: E/MessageQueue-JNI(18500):  at com.packagename.ui.activities.VideoPlayerActivity.showVideoEndScreen(VideoPlayerActivity.java:1375)
05-01 09:40:46.096: E/MessageQueue-JNI(18500):  at com.packagename.ui.activities.VideoPlayerActivity.onBackPressed(VideoPlayerActivity.java:1587)
05-01 09:40:46.096: E/MessageQueue-JNI(18500):  at android.app.Activity.onKeyUp(Activity.java:2193)
05-01 09:40:46.096: E/MessageQueue-JNI(18500):  at android.view.KeyEvent.dispatch(KeyEvent.java:2664)
05-01 09:40:46.096: E/MessageQueue-JNI(18500):  at android.app.Activity.dispatchKeyEvent(Activity.java:2423)
05-01 09:40:46.096: E/MessageQueue-JNI(18500):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1962)

【问题讨论】:

  • 请从 logcat 发布完整的堆栈跟踪。
  • @Karakuri 添加了堆栈跟踪
  • 你能告诉我们VideoPlayerActivity.initShareContextMenu吗?
  • @Karakuri 不需要,它从检索 ListView 开始。我在上面发布的那一行
  • 很明显出了点问题,仅仅显示那行代码并不足以解决这个问题。

标签: android listview android-listview


【解决方案1】:

在此处查看类似问题的答案:

Android: java.lang.ClassCastException: android.widget.imageView cannot be cast to android.widget.textView

Eclipse 往往会时不时地弄乱您的资源。这导致 对于一些奇怪的行为,例如字符串和图像被完全交换 您的应用程序,更常见的是 classCastException(s),当 Eclipse 会切换视图的 ID。

该问题的一些解决方案:

清理你的项目。

修改一个xml布局文件并保存。

删除您的 R 文件。 (不用担心它会自动生成 再次)。

基本上任何使您的项目重建和重新生成 R 文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-27
    • 1970-01-01
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多