【问题标题】:Android: Cast View to ViewAndroid:将视图投射到视图
【发布时间】:2012-05-15 10:18:41
【问题描述】:

我有一个扩展 View 的类(MyView extends View)

在活动中我有下一个:

    View view = (View)findViewById(R.id.relative_layout_view);

    //here I have error because of cast
    MyView myView = view;

为什么要我添加演员表?

P.S:我添加了演员表,应用程序崩溃了。

【问题讨论】:

  • 你在xml中添加了什么

标签: android


【解决方案1】:

MyViewView,但View 不一定是MyView,所以需要显式转换。

如果崩溃,则表示 ID 为 relative_layout_view 的视图不是 MyView 类型,您需要确定它在布局 XML 中的类型。

【讨论】:

    【解决方案2】:

    这样使用 只需像

    一样添加 xml
    <YourPackage Name.MyView
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:id="@+id/myview"
    android:layout_gravity="center"
    >   
    </YourPackage Name.MyView>
    

    然后在下面给出的活动中使用

       MyView view = (MyView)findViewById(R.id.relative_layout_view);
    

    【讨论】:

      【解决方案3】:

      为什么不这样做

      MyView view = (MyView) findViewById(R.id.relative_layout_view);
      

      【讨论】:

        【解决方案4】:

        简单的答案是您将view 实例向下转换为MyView

        将任何对象向下转换为其子类并不总是安全的,这就是编译器强制程序员将其对象显式类型转换为子类的原因。

        在您的情况下,view 不是MyView 类型。这就是编译器给出classCastException 的原因。

        但如果R.id.relative_layout_view 是MyWiew 类型,它就不会产生任何异常。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-02-27
          • 2011-04-03
          • 2014-03-13
          • 2017-09-14
          相关资源
          最近更新 更多