匿名函数中的回调,没有正确获取语法
Callback inside anonymous functions, not getting the syntax propely
我正在尝试在匿名 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?);
}
});
这里是OnMyClickclass和我定义的void回调接口:
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.");
}
}
问题是 listener 是一个匿名函数,所以我不想在某处定义一个单独的 class 只是作为回调。
我看了这个帖子,但没有给我太多信息:
How can an anonymous class use "extends" or "implements"?
有没有办法让匿名函数在范围内实现我的接口,比如:
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.");
}
});
}
});
如果这不是您的意思,请澄清,我会尽力提供进一步的帮助。
我正在尝试在匿名 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?);
}
});
这里是OnMyClickclass和我定义的void回调接口:
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.");
}
}
问题是 listener 是一个匿名函数,所以我不想在某处定义一个单独的 class 只是作为回调。
我看了这个帖子,但没有给我太多信息:
How can an anonymous class use "extends" or "implements"?
有没有办法让匿名函数在范围内实现我的接口,比如:
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.");
}
});
}
});
如果这不是您的意思,请澄清,我会尽力提供进一步的帮助。