Android:将视图转换为视图
我有一个扩展视图的类(MyView扩展视图) 在活动中,我有以下几点: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
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中添加了任何内容