хочу конвертировать класс Java в C # класс Xamarin Android - PullRequest
2 голосов
/ 18 марта 2019

Я работал над преобразованием HTML-файла в PDF-файл в Native Android. это работает, как я ожидал. когда я хочу переключиться на 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());
                }
            }
        });

WriteResultCallback , когда я хочу вызвать этот обратный вызов в Xamarin.Android. Это показывает необходимость создания конструктора. так что я создал класс и унаследовал WriteResultCallback в новом классе с помощью конструктора.

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

    }

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

После этого, когда я компилирую код, я получаю сообщение об ошибке компиляции

/ Users / яблоко / Проекты / Пример / образец / объект / Debug / Android / SRC / md5a4074a9abd9040c154db052535adf080 / MyWriteResultCallbackt.java (8,8): Ошибка: ошибка: WriteResultCallback () не является публичной в WriteResultCallback; недоступен извне Класс MyWriteResultCallbackt (Sample)

Может кто-нибудь сообщить мне, нахожусь ли я на правильном пути или нет, если есть способ выполнить преобразование файлов (HTML в PDF) в Xamarin.Android.please сообщите мне способ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...