Xamarin 中的接口回调

Posted

技术标签:

【中文标题】Xamarin 中的接口回调【英文标题】:Interface Callback in Xamarin 【发布时间】:2018-05-24 02:50:53 【问题描述】:

我正在尝试使用 c# 从 Xamarin 内部的 java 库中编写接口回调,下面是代码 sn-p,

Connector.getInstance().login(email, new ILoginCallback() 
@Override
public void onSuccess(long heloUserId) 
/* call the required Activity for successful login */

@Override
public void onPinverification() 
/*call the Pin verification activity to validate pin */

@Override
public void onFailure(String description) 
/*show the toast msg for failure*/

);

我无法在 c# 中进行接口回调,这阻止了我获得成功或失败的结果。

任何帮助表示赞赏。

【问题讨论】:

【参考方案1】:

在继承自 Java.Lang.Object 的类上实现您的接口:

public class MyLoginCallback : Java.Lang.Object, ILoginCallback

   // implement the interface

然后使用现在也具有 android Callable Wrapper (ACW) 的 C# 类作为回调实例。

类似:

Connector.Instance.Login(email, new MyLoginCallback();

回复:Android Callable Wrappers

【讨论】:

感谢您的回复。不幸的是,但代码仍然无法正常工作。能否请您详细说明。 我做了这样的事情,public partial class HeloLogin : ContentPage private void OnRegister(object sender, EventArgs e) Connector.Instance.Login(Email.Text, new XYZ()); 公共类 XYZ : Java.Lang.Object, ILoginCallback public void Dispose() public void OnFailure(string p0) public void OnPinverification() public void OnSuccess(long p0) @user6352350 这并没有告诉我什么不是“工作” 我在每个方法上都设置了断点。但回调行执行后什么都没有命中。 @user6352350 你需要调试Connector.Instance.Login 所做的任何事情......我不知道它做了什么或绑定了什么Java库。【参考方案2】:

如下实现你的界面

public class MyLoginCallback : Java.Lang.Object, ILoginCallback, ISerializable
    
   public MyLoginCallback()
    

   public MyLoginCallback(IntPtr intPtr, Android.Runtime.JniHandleOwnership handleOwnership)
    

   // implement the interface methods here

【讨论】:

以上是关于Xamarin 中的接口回调的主要内容,如果未能解决你的问题,请参考以下文章

Java中啥是接口回调?

Android中的接口回调技术

关于Java中的接口回调和retrofit中的反射

关于Java中的接口回调和retrofit中的反射

谈谈-Android中的接口回调技术

给个Java接口回调的例子