【问题标题】:Translate a Java anonymous callback class to C#将 Java 匿名回调类转换为 C#
【发布时间】:2016-06-07 13:04:52
【问题描述】:

我是 Xamarin Android 的初学者,我必须测试手机 Honeywell Dolphin CT 50 的扫描仪。

我的项目编译得很好,我已经很好地添加了蜂蜜的 jar 库,但我现在的问题是一些 Java 代码。

我不能把它翻译成 C#!

代码如下:

public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // create the AidcManager providing a Context and a
    // CreatedCallback implementation.
    AidcManager.create(this, new CreatedCallback() {

        @Override
        public void onCreated(AidcManager aidcManager) {
            manager = aidcManager;
            barcodeReader = manager.createBarcodeReader();
        }
    });

    ActivitySetting();
}

我的问题是翻译方法的第二个参数:

AidcManager.create => new CreatedCallback() ?

如何将其翻译成 C#?

【问题讨论】:

    标签: java c# xamarin


    【解决方案1】:

    您可以使用 lambda,但是一旦您有多个方法可以覆盖,它就会崩溃。一个单独的类是处理一般情况的方法:

    public virtual void onCreate(Bundle savedInstanceState)
    {
        base.onCreate(savedInstanceState);
        ContentView = R.layout.activity_main;
    
        // create the AidcManager providing a Context and a
        // CreatedCallback implementation.
        AidcManager.create(this, new CreatedCallbackAnonymousInnerClassHelper());
    
        ActivitySetting();
    }
    
    private class CreatedCallbackAnonymousInnerClassHelper : CreatedCallback
    {
        public override void onCreated(AidcManager aidcManager)
        {
            manager = aidcManager;
            barcodeReader = manager.createBarcodeReader();
        }
    }
    

    【讨论】:

    • 您好,戴夫,感谢您抽出宝贵的时间来实现您的代码,但是如果我在类 Helper 的 onCreated 中设置断点,我的 Visual Studio 永远不会停止...
    • 对不起,这是我第一次在堆栈溢出中,但是我如何用代码发表评论?
    • @tapastoutvu:我认为这不是转换问题。如果您的代码有一个“CreatedCallback”类,那么这个类应该引发被覆盖的“onCreated”方法将捕获的事件。
    • 您好,丹,感谢您抽出宝贵时间,但我该如何发起活动?这是课程:使用 Com.Honeywell.Aidc;命名空间 HoneyWellCT50 { 公共类 CreatedCallbackAnonymousInnerClassHelper : Com.Honeywell.Aidc.AidcManager.ICreatedCallback { public void OnCreated(AidcManageraidcManager) { MainActivity.manager =aidcManager; MainActivity.barcodeReader = MainActivity.manager.CreateBarcodeReader(); } 公共 IntPtr 句柄 { 获取;放; } 公共无效 Dispose() { } }
    • 你好,戴夫,现在可以工作了 :) 我很高兴 .. 解决我的问题的步骤是:AidcManager.Create(this, this); reader.AddBarcodeListener(this as BarcodeReader.IBarcodeListener); reader.AddTriggerListener(this as BarcodeReader.ITriggerListener); reader.Claim();在清单中添加授权后: 毕竟工作正常感谢您的帮助抱歉,我找不到如何使用代码添加新消息
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-01
    • 2020-04-18
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多