2017-09-30 74 views
1

我想調用從寫入web apis的java類的活動A中實現的接口方法。從java類的活動中實現的調用接口方法

流就像是從活性的移動的活動B和從B,寫入了在一個單獨的Java類的API活性被調用時,現在的API成功的結果,我想要調用在活動A.實現的接口方法

A - > B - > Java class - > interface()in A

我在調用接口方法的java類中獲取活動A的引用時遇到問題。我試過follwing代碼,但沒有任何工作。感謝您的時間和幫助

Interface objInterface = (Interface) context; 
objInterface.funInterface(); 

Interface objInterface = (Interface) context.getApplicationContext(); 
objInterface.funInterface(); 

Interface objInterface = (Interface) new Activity_A; 
objInterface.funInterface(); 
+1

嘗試使用EventBus其如此簡單。你不需要使用接口https://github.com/greenrobot/EventBus –

+0

如果我明白了,你想調用一個在Java類中實現活動A的接口方法嗎?如果是,那麼您可以通過傳遞上下文,然後執行Interface i =(ActivityA)上下文來獲取對活動A的引用; –

+0

@ RaffaeleD'Arco其類似的上下文從ActivityB傳遞並將其轉換爲ActivityA – shehzy

回答

2

讓我描述你想要做什麼,也許你就會明白爲什麼你有一個困難時期:


Interface objInterface = (Interface) context; 
objInterface.funInterface(); 

如果這context來自活動B,那麼這是錯誤的。活動B和活動A都是Context s,但它們不一樣Context


Interface objInterface = (Interface) context.getApplicationContext(); 
objInterface.funInterface(); 

Application的是不一樣的作爲Activity。它不能成爲神奇活動A


Interface objInterface = (Interface) new Activity_A; 
objInterface.funInterface(); 

這絕對是一種活動A和它確實有實現......但它是一個不同的比一個已經存在的一個。


活動B不應該知道的活動A.你單獨的Java類不應該知道的活動B.這是一個常見的設計原則叫Separation of Concerns。我建議重點關注從Java類到Activity B的數據。然後,取這些數據,並使用活動之間溝通的記錄手段將其發送回活動答:https://developer.android.com/training/basics/intents/result.html

最後,你可以使用一個通信庫像EventBus,但看着你的代碼好像你可能會被誤解一核心概念,所以我不會推薦依賴「神奇的數據總線」,直到你理解了android組件的範圍。 :)

+0

很好的答案+1。 – JoxTraex

+0

:)感謝Jon的詳細解釋 – shehzy

相關問題