我被要求将代码从Xamarin移植到Android工作室(C#到java),我正在努力移植几件东西,其中包括'公共事件动作varName1'以及它们对java的实现。在
Xamarin他们按照以下方式使用:
public class class1: Java.Lang.Object{
public event Action varName1;
public event Action varName2;
...
//and they are called as
varName1();
varName2();
//on the public void OnMove(MotionEvent motionEvent) method.
}
另外,它们用于
class2:Activity{
void initialization()
{
class1 listener = new class1();
listener.varName1 += class3.Open;
listener.varName2 += class3.Close;
...
}
所以我假设每个都可以分为两个要求,一个事件和一个没有参数的Action。由于Action来自System,并且据我所见,没有直接端口,我想到了使用http://codingbytodesign.net/en/2016/06/06/actiont-and-funct-tresult-in-java-8/处找到的代码。
我还阅读了有关事件以及如何在java中使用它们的内容,并发现这非常有用(https://scatteredcode.wordpress.com/2011/11/24/from-c-to-java-events/),但在尝试对这两种事情进行排序时,我甚至都没有知道从哪里开始。
我相信我可能会过于复杂化,所以我很乐意接受一些指导,或者如果有人可以帮助我解决如何解决这个问题,我将非常感激。
答案 0 :(得分:0)
我认为没有直接的翻译。 Java通常做的是实现监听器接口,这是简单的回调。
所以你的例子可能有点像:
std::string
然后你的类可以有一个构造函数,它将这个接口作为参数并稍后调用它:
public interface MyListener {
public void action1();
public void action2();
}
然后,您可以在构建public class ListenerConsumer {
MyListener listener;
ListenerConsumer (MyListener listener) {
this.listener = listener;
}
public void doSomething() {
this.listener.action1();
}
public void doSomethingElse() {
this.listener.action2();
}
}
时匿名实施MyListener
类:
ListenerConsumer
或