调用java类活动中实现的接口方法

时间:2017-09-30 17:57:45

标签: android interface

我想从编写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();

1 个答案:

答案 0 :(得分:2)

让我描述你想要做的事情,也许你会明白为什么你会遇到困难:

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

如果此context来自活动B,那么这是错误的。活动B和活动A都是Context个,但它们不是Context

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

ApplicationActivity不同。它不能神奇地成为活动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组件的范围。 :)