【问题标题】:Java Class calling method in ActivityActivity中Java类调用方法
【发布时间】:2016-11-03 20:08:55
【问题描述】:

我想了解如何在另一个类中的流程完成后调用我的活动中的方法?

请看我的示例。在 MyActivity 中,我想在 MyClass 中调用一个名为 doSomething 的方法。当 doSomething 完成时,我希望 MyClass 将(通知?,接口?,委托?,可观察?,插入“我不知道这里”)我完成的方法返回到 Activity。

我看过接口。但我不明白重点。 (你基本上承诺实现一个方法?但是......为什么?你可以只实现没有接口的方法。)

我在 MyActivity 上尝试了 Observable,但我无法扩展多个类...

委托看起来像接口。

我不知道。我仍然在学习,希望有人能帮助我理解。我看到的大部分教程一般都是互相复制粘贴的。我承认我没有理解 Java 的基本功能。

【问题讨论】:

  • 看起来像订阅者-发布者模式任务。你可以看看this answer。

标签: java android interface delegates


【解决方案1】:

为此,您必须提供一种方法来对您的其他班级进行回调。喜欢:

interface CompletionCallback {
  void finish();
}

然后:

class MyActivity ... implements CompletionCallback {
...

  void doTheThing() {
    MyClass someMyClass = new MyClass();
    someMyClass.doSomething(this);
  }

  @Override 
  void finish() { ...

最后:

class MyClass {
  void doSomething(CompletionCallback callback) {
    ....
    callback.finish()

换句话说:

  1. 您创建一个接口,其中包含您需要回调的方法(使用接口允许您抽象应该回调的类的具体实现)
  2. 现在您只需将实现该接口的类的对象传递给应该回调您的代码

【讨论】:

  • 天哪,谢谢!这种模式叫什么?这种模式可以在活动之间应用吗?还是最好使用 Intent?
  • 嗯,“回调” ;-) 但这将与“更多”的东西相关联(如 javaworld.com/article/2077462/learn-java/… )......从这个意义上说;我什至不确定是否有特定的名称。因为它真的很基本 - 如果一个对象想要调用另一个对象,它需要 A)对该对象的引用和 B)调用的方法。我的个人提示:退出 Android。浏览基础Java 教育材料 一段时间。如果没有扎实的 Java 基础,学习 Android 毫无意义。
  • 非常感谢!
  • 换句话说:你最好通过docs.oracle.com/javase/tutorial first之类的东西来工作。否则你在 Android 上的实验会非常令人沮丧;并且可能很快就会结束,因为你会失去动力......因为你会在另一面墙上碰壁。
猜你喜欢
  • 2018-11-07
  • 2015-02-27
  • 1970-01-01
  • 1970-01-01
  • 2016-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多