2011-12-20 22 views
0

说我有两个活动的活动,A(有一个窗口)和B(有一个视图嵌入A,但它仍然是它自己的活动)。 这些活动位于不同的包中,但在同一过程中运行。android跨活动界面

将活动B中的视图添加到A中的视图中,该视图实现了界面II的声明位于AB之间共享的库中。

所以我认为我可以沿着这条的B一个实例内的线路做一些事情:

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

但我得到一个铸造错误。有没有办法做到这一点?

做一点自省可以很容易地证明viewInA实际上确实实施I。当然,I所在的包在两种活动中都是相同的。

由于这种情况我的一套限制是相当独特的;用intents进行简单的消息传递将不起作用。

我可以创建一个包装器,它使用内省来获取我知道存在的视图上的方法。但这很丑,我很懒。

+0

你为什么要做你在第一段中描述的内容? – CommonsWare 2011-12-21 00:37:37

+0

“B(有一种观点嵌入在A中,但仍然是它自己的活动)”我不确定你的意思是什么......另外,你怎么能有两个活跃的活动? – 2011-12-21 03:33:09

回答

0

抛开其他一切,如果在Java中出现了转换错误,那是因为viewInA实际上并没有实现I.请注意,getParent()返回一个实现ViewParent的类...(即,是否扩展ViewParent ??)

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