java - 匿名函数内的回调,未正确获取语法

标签 java android anonymous-function anonymous-inner-class

我正在尝试在匿名类中实现 void 方法回调,但由于我在大型 android 代码库上工作,因此我对语法有点迷失。我已经设置了一个监听器和图像按钮,如下所示:

MyImageView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        OnFollowingClick click;
        click = new OnMyClick(param1, param2);  // irrelevant for this thread
        click.onClick(view);    // irrelevant for this thread

        // my problem is here!
        click.setCallback( what do I pass in here? and where can define my callback?);
    }
});

这是我定义的 OnMyClick 类和 void 回调接口(interface):

public interface CallbackInterface {
    public void Callback();
}

public class OnMyClick implements View.OnClickListener {
    // I added this
    CallbackInterface mCallBack;
    public void setCallback(CallbackInterface callback) {
        this.mCallBack = callback;
    }
    // Please call my callback
    public void onFollowingChanged() {
        if (mCallBack != null) {
            mCallBack.Callback();
        }
    }
    // a bunch of code in here that does not matter
    // ...

我必须在某处创建回调,所以我猜我需要类似的东西:

public class SomeClass implements CallbackInterface {

    @Override
    public void Callback() {
        System.out.println("Hey, you called.");
    }
}

问题是监听器是一个匿名函数,所以我不想在某个地方定义一个单独的类只是为了充当回调。

我看了这个帖子,但没有给我太多信息:

How can an anonymous class use "extends" or "implements"?

有没有办法让匿名函数在作用域内实现我的接口(interface),例如:

MyImageView.setOnClickListener(new View.OnClickListener() {

    @Override
    public void Callback() {
        // please call me!
    }

不确定这是否有意义,非常感谢购买任何帮助。

谢谢!

最佳答案

只需匿名定义回调,就像您已经使用 View.OnClickListener 所做的那样。

MyImageView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        OnFollowingClick click;
        click = new OnMyClick(param1, param2);  // irrelevant for this thread
        click.onClick(view);    // irrelevant for this thread

        // your solution is here!
        click.setCallback(new CallbackInterface() {
            @Override
            public void Callback() {
                System.out.println("Hey, you called.");
            }
        });
    }
});

如果这不是您的意思,请澄清,我会尽力提供进一步帮助。

关于java - 匿名函数内的回调,未正确获取语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35713950/

相关文章:

android - 如何强制我的应用不使用 3g 数据代理设置

java - Gradle 构建错误 - 程序类型已存在

c++ - 如何使用函数指针声明 lambda(不带 auto)?

javascript - 你如何在 JavaScript 中解释这种结构?

java - 当应用程序被杀死时,广播接收器不会在奥利奥上监听

java - 将 float 转换为数据类型 numeric 的算术溢出错误

android - 什么是主机和 Controller btsnoop_hci.log?

Javascript argument.callee 的用途是什么

java - 将方法参数声明为 final 的目的是什么?

java - 添加所有类