我的项目(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
任何帮助将不胜感激。如果我错过了什么,请告诉我。
答案 0 :(得分:2)
你得到一个例外,因为演员阵容无法像那样工作。这样考虑:所有ChildScrollView
也是ScrollView
,因此在ScrollView
上下文中使用它们是有意义的。但ScrollView
对象可能是也可能不是ChildScrollView
。
您可以使用reflection在转换之前尝试在运行时确定对象的类,以确保转换是安全的。但是,我不确定您要使用上面的代码完成什么。您创建了scrview1
引用的新对象,但是立即将该变量分配给scrview
?您能否提供有关您想要完成的任何更多细节?