Java / Android Studio相当于C#/ Xamarin'公共事件Action varName'

时间:2017-01-03 22:38:50

标签: java c# android android-studio xamarin

我被要求将代码从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/),但在尝试对这两种事情进行排序时,我甚至都没有知道从哪里开始。

我相信我可能会过于复杂化,所以我很乐意接受一些指导,或者如果有人可以帮助我解决如何解决这个问题,我将非常感激。

1 个答案:

答案 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