Android ScrollView中的ClassCastException

时间:2012-07-26 21:32:50

标签: java android inheritance multi-level

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

这是继承heirarchy: B扩展D,扩展了一个扩展A的抽象类E

我正在使用robotium方法获取当前活动中的所有滚动视图,该视图返回scrollviews(ArrayList)的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

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

1 个答案:

答案 0 :(得分:2)

你得到一个例外,因为演员阵容无法像那样工作。这样考虑:所有ChildScrollView也是ScrollView,因此在ScrollView上下文中使用它们是有意义的。但ScrollView对象可能是也可能不是ChildScrollView

您可以使用reflection在转换之前尝试在运行时确定对象的类,以确保转换是安全的。但是,我不确定您要使用上面的代码完成什么。您创建了scrview1引用的新对象,但是立即将该变量分配给scrview?您能否提供有关您想要完成的任何更多细节?