从另一个对象-java调用方法

时间:2015-09-25 16:44:23

标签: java android methods

我正在做一些Android开发,我有一个对象,它执行特定的任务。当该任务完成后,我需要通知我的主要方法(主要活动),该方法一直在运行,该过程已经完成并传递了一些有关它的信息。

这可能听起来有点不清楚,所以我给你举个例子:
请查看Android中的setOnClickListener()方法:

 Button button = (Button) findViewById(R.id.button1);
            button.setOnClickListener(new OnClickListener() {
                    //This method is called on click
                    @Override
                    public void onClick(View v) {
                      //The View is passed in an anonymous inner class 
                    }
            });

等待单击按钮并调用onClick(View v)方法。我正在寻求实现相同的代码结构。

如何做到这一点?

2 个答案:

答案 0 :(得分:1)

这正是您在android中使用视图的侦听器模式。你想要做的是在你的类中声明一个正在完成工作的接口,并传递一个这个接口的实例。原始示例:

TaskDoer.java

public class TaskDoer {
  public interface OnTaskDoneListener {
    void onDone(Data data);
  }

  public void doTask(OnTaskDoneListener listener) {
    // do task...
    listener.onDone(data);
  }
}

活动

public void doTaskAndGetResult() {
  new TaskDoer().doTask(new TaskDoer.OnTaskDoneListener() {
      public void onDone(Data data) {
         // do something
      }
  }
}

答案 1 :(得分:1)

你提到了“过程”。如果您真的在不同的过程中做某事,那么您需要查看interprocess communications(IPC)。否则,您可以使用界面:

创建一个名为MyListener的类:

public interface MyListener {
    void onComplete();
}

在您的班级中通知您的活动:

MyListener myListener;

public void setMyListener(MyListener myListener){
  this.myListener = myListener;
}

然后,当您准备好通知主要活动时,请拨打以下一行:

myListener.onComplete();

最后,在MainActivity工具MyListener

public class MyListener extends Activity implements MyListener {
     ///other stuff

     @Override
     public void onComplete(){
        // here you are notified when onComplete it called
     }
}

希望这会有所帮助。欢呼声。