Android跨活动接口



假设我有两个活动,A(有一个窗口)和B(在A中嵌入了一个视图,但仍然是它自己的活动)。这些活动在不同的包中,但在同一个进程中运行。

活动B中的视图被添加到实现接口IA中的视图中。I的声明在AB共享的库中。

所以我假设我可以在B的实例中做一些类似这样的事情:

viewInA = viewInB.getParent();
(I)viewInA;

但是我得到一个类型转换错误。有办法解决这个问题吗?

做一点自省可以很容易地证明viewInA实际上实现了I。当然,I所在的包对于两个活动来说是相同的。

由于这种情况,我的一组限制是相当独特的;使用intent进行简单的消息传递是行不通的。

我可以创建一个包装器,它使用自省来获取我知道存在的视图上的方法。但是那很难看,而且我很懒。

除此之外,如果你在Java中得到一个类型转换错误,那是因为viewInA实际上没有实现I.请注意,getParent()返回一个实现ViewParent的类…(即我是否扩展ViewParent??)

尽管如此,你可以设置一个断点,并在运行时检查viewInA的类型!

最新更新