Android:将视图转换为视图

Android:将视图转换为视图,android,Android,我有一个扩展视图的类(MyView扩展视图) 在活动中,我有以下几点: View view = (View)findViewById(R.id.relative_layout_view); //here I have error because of cast MyView myView = view; 为什么要我加演员 附言:我添加了cast,应用程序崩溃。MyView是一个视图,但是视图不一定是MyView,所以你需要显式地强制转换它 如果它崩溃,这意味着ID为r

我有一个扩展视图的类(MyView扩展视图)

在活动中,我有以下几点:

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

    //here I have error because of cast
    MyView myView = view;
为什么要我加演员


附言:我添加了cast,应用程序崩溃。

MyView
是一个
视图
,但是
视图
不一定是
MyView
,所以你需要显式地强制转换它


如果它崩溃,这意味着ID为
relative\u layout\u view
的视图不属于
MyView
类型,您需要确保其类型在布局XML中。

MyView
视图
,但
视图
不一定是
MyView
,因此需要显式强制转换它

如果它崩溃,这意味着ID为
相对布局视图的视图不是类型
MyView
,您需要确保其类型在布局XML中。

为什么不这样做呢

MyView view = (MyView) findViewById(R.id.relative_layout_view);
为什么不直接做呢

MyView view = (MyView) findViewById(R.id.relative_layout_view);
这样 只需像这样添加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>
这样 只需像这样添加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
类型。这就是编译器给出
classCastException
的原因


但是,如果
R.id.relative\u layout\u view
是MyWiew类型,它不会生成任何异常。

简单的答案是,您正在向下转换
视图
实例到
MyView

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

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


但是,如果
R.id.relative\u layout\u view
的类型是MyWiew,则不会生成任何异常。

您是否在xml中添加了任何内容