【问题标题】:Cannot cast Int to android.view.View using Transition in Adapter class无法使用适配器类中的转换将 Int 转换为 android.view.View
【发布时间】:2017-01-30 14:55:33
【问题描述】:

我正在尝试在我的应用中使用过渡,但遇到了这个问题,

Cannot cast Int to android.view.View

下面是我的代码:

holder.newsRoot.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent newsIntent = new Intent(NewsAdapter.this.c, NewsDetails.class);

                newsIntent.putExtra("newstitle",NewsTitle);
                newsIntent.putExtra("detailednews",DetailedNews);
                newsIntent.putExtra("newsdate",NewsDate);
                newsIntent.putExtra("newsphoto",NewsPhoto);


                ActivityOptionsCompat options= ActivityOptionsCompat.makeSceneTransitionAnimation(this,(View)news_image,"image_transit");

                c.startActivity(newsIntent,options.toBundle());

            }
        });

我正在尝试将其集成到 Adapter class 中,但这是问题所在:

`ActivityOptionsCompat options= ActivityOptionsCompat.makeSceneTransitionAnimation(this,(View)news_image,"image_transit")`;

** 发现这些词有问题**

(View)news_image

我的 ImageView 的 xml 代码。

 <ImageView

                android:id="@+id/news_image"
                android:layout_width="80dp"
                android:transitionName="image_transit"
                android:layout_height="80dp"
                android:src="@drawable/bbb"/>

【问题讨论】:

  • 请分享一些您定义/设置news_image的代码。像这样看起来它实际上可能是一个视图 ID,但不是真正的视图。
  • 我有一些新闻要告诉你。你没有告诉我们news_image 是什么!
  • Cannot cast Int to android.view.View 仅表示您正在尝试将整数转换为视图,因此news_imageint。先谷歌一下excpetion来理解它的意思,而不是搜索问题。
  • 你没有显示你在哪里声明和初始化news_image,XML只设置了R.id.news_image的值

标签: java android android-transitions


【解决方案1】:

问题:在 android 中,您将对象的 id 存储为 int,但 int 是视图 id,而不是视图本身

解决方案:为了使用它,您需要使用findViewById 获取视图。

ImageView yourImageView = (ImageView) findViewById(R.id.news_image);

在您的情况下,您也可以直接在有问题的方法中使用它:

ActivityOptionsCompat options= 
      ActivityOptionsCompat.makeSceneTransitionAnimation(this,  
                                                         findViewById(R.id.news_image),
                                                         "image_transit")`;

因为你把它放在了xml布局中:

<ImageView android:id="@+id/news_image"

【讨论】:

  • 猜得好。希望它通过。
  • 但请记住我的意图是在适配器类中,请您尝试用您的答案编辑我的代码
  • @JordiCastilla,是一个 v an Int 或 View
  • v 是事件的视图:public void onClick(View v) { 但只是一个例子,让我更新代码
  • 应该是 Int v =(View) findViewById(R.id.news_image);或
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多