我想从编写web apis的java类调用活动A中实现的接口方法。
Flow就像从活动A移动到活动B,从活动B调用在单独的java类中编写的api,现在在api的成功结果上,我想调用在活动A中实现的接口方法。
A - > B - > Java类 - > A中的interface()
我在调用接口方法的java类中获取活动A的引用时遇到问题。我尝试了以下代码,但没有任何效果。感谢您的时间和帮助
Interface objInterface = (Interface) context;
objInterface.funInterface();
Interface objInterface = (Interface) context.getApplicationContext();
objInterface.funInterface();
Interface objInterface = (Interface) new Activity_A;
objInterface.funInterface();
答案 0 :(得分:2)
让我描述你想要做的事情,也许你会明白为什么你会遇到困难:
Interface objInterface = (Interface) context;
objInterface.funInterface();
如果此context
来自活动B,那么这是错误的。活动B和活动A都是Context
个,但它们不是Context
。
Interface objInterface = (Interface) context.getApplicationContext();
objInterface.funInterface();
Application
与Activity
不同。它不能神奇地成为活动A.
Interface objInterface = (Interface) new Activity_A;
objInterface.funInterface();
这绝对是一个活动A,它 具有实现......但它与已存在的A不同。
活动B不应该了解活动A.你的单独的java类不应该知道活动B.这是一个通用的设计原则,叫做Separation of Concerns。我建议首先关注从java类到Activity B的数据。然后,使用记录的活动之间的通信方式获取该数据并将其发送回活动A:https://developer.android.com/training/basics/intents/result.html
最后,您可以使用EventBus之类的通信库,但是查看您的代码似乎可能会误解核心概念,因此我不建议依赖于“魔法数据”总线"直到你了解android组件的范围。 :)