首页 > 解决方案 > 想要将 Java 类转换为 C# 类 Xamarin Android

问题描述

我一直致力于在 Native android 中将 HTML 文件转换为 PDF 文件。它按我的预期工作。当我想切换到 Xamarin.Android 时,我无法转换回调。

printAdapter.onLayout(null, printAttributes, null, new PrintDocumentAdapter.LayoutResultCallback() {
    @Override
    public void onLayoutFinished(PrintDocumentInfo info, boolean changed) {
        Log.e("Finish", "onLayoutFinished" );
        ParcelFileDescriptor fileDescriptor = getOutputFile(path, fileName);
        if (null == fileDescriptor) {
            if (mListener != null) {
                mListener.onError();
            }
            return;
        }
        printAdapter.onWrite(new PageRange[]{PageRange.ALL_PAGES}, fileDescriptor, new CancellationSignal(), new PrintDocumentAdapter.WriteResultCallback() {
            @Override
            public void onWriteFinished(PageRange[] pages) {
                Log.e("Finish", "onWriteFinished" );
                super.onWriteFinished(pages);
                if (mListener != null) {
                    mListener.onWriteFinished((new File(path, fileName)).getAbsolutePath());
                }
            }
        });
    }
}, null);

上面的代码是我在原生 Android 中用 Java 完成的。

printAdapter.onWrite(new PageRange[]{PageRange.ALL_PAGES}, fileDescriptor, new CancellationSignal(), new PrintDocumentAdapter.WriteResultCallback() {
            @Override
            public void onWriteFinished(PageRange[] pages) {
                Log.e("Finish", "onWriteFinished" );
                super.onWriteFinished(pages);
                if (mListener != null) {
                    mListener.onWriteFinished((new File(path, fileName)).getAbsolutePath());
                }
            }
        });

当我想在 Xamarin.Android 中调用此回调时,WriteResultCallback 它显示需要创建构造函数。这样我就创建了一个类并使用构造函数在新类中继承 WriteResultCallback。

public class MyWriteResultCallbackt : WriteResultCallback
{
    public MyWriteResultCallbackt(IntPtr javaReference, JniHandleOwnership transfer) : base(javaReference, transfer)
    {

    }

    public override void OnWriteFinished(PageRange[] pages)
    {
        base.OnWriteFinished(pages);
    }
}

之后,当我编译代码时,我得到编译错误

/Users/apple/Projects/Sample/Sample/obj/Debug/android/src/md5a4074a9abd9040c154db052535adf080/MyWriteResultCallbackt.java(8,8):错误:错误:WriteResultCallback() 在 WriteResultCallback 中不公开;无法从外部包公共类 MyWriteResultCallbackt 访问(示例)

谁能让我知道我是否在正确的轨道上,如果有办法在 Xamarin.Android 中进行文件转换(HTML 到 PDF)。请告诉我方法。

标签: pdfxamarinxamarin.android

解决方案


推荐阅读