假设我有两个活动活动,A
(有一个窗口)和B
(在A
中嵌入了一个视图,但它仍然是它自己的活动)。
活动在不同的包中,但在同一个过程中运行。
活动B
中的视图已添加到A
中实现接口I
的视图中。 I
的声明位于A
和B
之间共享的库中。
所以我假设我可以在B
的实例内部执行某些操作:
viewInA = viewInB.getParent();
(I)viewInA;
但是我得到了一个投射错误。有没有办法使这项工作?
进行一些内省可以很容易地证明viewInA
确实实现了I
。当然,I
所在的包对两个活动都是相同的。
由于这种情况,我的一系列限制是相当独特的;使用意图进行简单的消息传递是行不通的。
我可以创建一个使用内省的包装器来获取我知道存在的视图上的方法。但那很难看,而且我很懒。
答案 0 :(得分:0)
除了其他所有内容之外,如果你在Java中出现了一个转换错误,那是因为viewInA确实没有实现I.请注意getParent()返回一个实现ViewParent的类...(即我是否扩展了ViewParent?) / p>
尽管如此,您可以设置断点,并在运行时检查viewInA的类型!