2011-12-20 86 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的類型!