假设我有两个活动,A
(有一个窗口)和B
(在A
中嵌入了一个视图,但仍然是它自己的活动)。这些活动在不同的包中,但在同一个进程中运行。
活动B
中的视图被添加到实现接口I
的A
中的视图中。I
的声明在A
和B
共享的库中。
所以我假设我可以在B
的实例中做一些类似这样的事情:
viewInA = viewInB.getParent();
(I)viewInA;
但是我得到一个类型转换错误。有办法解决这个问题吗?
做一点自省可以很容易地证明viewInA
实际上实现了I
。当然,I
所在的包对于两个活动来说是相同的。
由于这种情况,我的一组限制是相当独特的;使用intent进行简单的消息传递是行不通的。
我可以创建一个包装器,它使用自省来获取我知道存在的视图上的方法。但是那很难看,而且我很懒。
除此之外,如果你在Java中得到一个类型转换错误,那是因为viewInA实际上没有实现I.请注意,getParent()返回一个实现ViewParent的类…(即我是否扩展ViewParent??)
尽管如此,你可以设置一个断点,并在运行时检查viewInA的类型!