如何在课程

时间:2017-09-21 08:25:16

标签: java android

我试图找到一种方法如何在课堂上为我的函数添加回调。我在所有sdk中看到了这个方法。

基础示例其视图中的onClickListener

myBtn.setOnClickListener(new View.OnClickListener(--blabla method --));

可以解释一下我或者给我一些好的信息,我可以在这里读到这个方式吗?

例如我想做类似的东西: 我在课堂上有登录功能

  

MyClass的

MyClass {
public static void Login() {

}

我有听众的话:

public interface OnLoginListener {
void onLoginListener(boolean result);
}

代码中的某个地方我打电话

MyClass.Login();

但我怎么能这样称呼这个函数:

MyClass.Login(new OnLoginListener(--blabla--));

问题1 问题2  一切都一样,但我可以添加像asyncTask

之类的东西
MyClass.Login().callAsync();

如何在代码中执行此操作?) 我知道它必须是基本的。但我不知道该找到什么。请解释我或给我一些信息:)

UPD 对于Question2我抱错了信息 我想添加prepareAsync登录。 在某些sdk中,它看起来像

MyClass.Login().prepareAsync();

3 个答案:

答案 0 :(得分:1)

在类中创建一个侦听器接口,以便将数据发送到活动

public interface OnLoginListener {
    void onLoginListener(boolean result);
}

在同一个类中添加一个方法,将侦听器注册到要发送数据的对象;

public void setOnLoginListener(OnLoginListener listener) {
    mListener = listener;
}

当您必须通过侦听器发送数据时,会将某些操作从您的类发送到活动或任何已注册的类

if(mListener!=null){
  mListener.onLoginListener(YOUR BOOLEAN RESULT);
}

然后在您的activity类中创建一个侦听器类的对象,并像这样调用该方法。

SampleClass sampleClass = new SampleClass();
sampleClass.setOnLoginListener(new SampleClass.OnLoginListener() {
    @Override
    public void onLoginListener(boolean result) {

    }
});

答案 1 :(得分:0)

试试这个。

<强> MyClass的

public class MyClass {

    OnLoginListener mOnLoginListener;


    public void callAsync() {

    }

    public interface OnLoginListener {
        void onLoginListener(boolean result);
    }

    public void Login(OnLoginListener mOnLoginListener) {
        this.mOnLoginListener = mOnLoginListener;
    }
}

并在活动或片段中调用它。

MyClass myClass = new MyClass();
myClass.callAsync();
myClass.Login(new MyClass.OnLoginListener() {
    @Override
    public void onLoginListener(boolean result) {
            // do something  here
    }
});

答案 2 :(得分:0)

使用

public interface OnLoginListener {
    void onLoginListener(boolean result);
}

MyClass {
    public static void Login(OnLoginListener listener) {
        // use the listener here
    }
}