1

我的项目(B)中有一个类扩展(不是直接)ScrollView(A),可用于在垂直的月份字段滚动中设置一个值

这是继承层次结构: B 扩展 D 扩展抽象类 E 扩展 A

我正在使用一种机器人方法,该方法获取当前活动中的所有滚动视图,该活动返回一个 ArrayList 的 scrollviews(ArrayList) 。

我正在尝试分配该arraylist ArrayList.get(0) 的第一个元素并尝试将其强制转换为 B 对象,如下所示:

ScrollView scrview =  new ScrollView(a.getApplicationContext());
ChildScrollView scrview1 = new ChildScrollView(a.getApplicationContext());

scrview = solo.getScrollViews().get[0];
scrview1 = (ChildScrollView) scrview; // I get the classcastexception here

有没有办法解决这个问题?

我也试过

ChildScrollView scrview1 = new ChildScrollView(a.getApplicationContext());
ScrollView scrview =  (ScrollView)new childScrollView(a.getApplicationContext());
//Also tried this --> ScrollView scrview = (ScrollView) scrview1;

scrview = solo.getScrollViews().get[0];
scrview1 = (ChildScrollView) scrview; // I get the classcastexception here

任何帮助,将不胜感激。如果我遗漏了什么,请告诉我。

4

1 回答 1

2

你得到一个例外,因为演员不能那样工作。这样想:All ChildScrollVieware also ,所以在上下文ScrollView中使用它们是有意义的。ScrollView但是一个ScrollView对象可能是也可能不是ChildScrollView

您可以在强制转换之前使用反射尝试在运行时确定对象的类,以确保强制转换是安全的。但是,我不确定您要使用上面的代码完成什么。您创建了一个由 引用的新对象scrview1,但随后立即将该变量分配给scrview? 你能提供更多关于你想要完成的事情的细节吗?

于 2012-07-26T21:52:05.497 回答