2017-03-06 25 views
0

私のAndroidプリントクラスでは、時にはonRrite関数でPageRangeのパラメータがnullになり、オーバーライド関数であり、値がAndroidフレームワークから渡された場合、原因を見つける必要があります時には(100%ではない)nullですか?それはデバイスの問題ですか?誰かがこれに会ったことがありますか?コードとログは以下の通りです:あなたが明示的にページを抽出する必要がない限りAndroid PrintManager PageRange is null

class PdfFragmentPrintDocumentAdapter extends PrintDocumentAdapter{ 
    public void onWrite(PageRange[] pages, ParcelFileDescriptor destination, CancellationSignal cancellationSignal, WriteResultCallback callback) { 

    ........ 
    callback.onWriteFinished(pages); 
    } 
......... 


java.lang.IllegalArgumentException: pages cannot be empty 
    at android.print.PrintManager$PrintDocumentAdapterDelegate$MyWriteResultCallback.onWriteFinished(PrintManager.java:961) 
    at com.microsoft.pdfviewer.PdfFragmentPrint$PdfFragmentPrintDocumentAdapter$2.run(PdfFragmentPrint.java:265) 
    at com.microsoft.pdfviewer.PdfFragmentPrint$PdfFragmentPrintDocumentAdapter.implementOnWriteInDedicatedThread(PdfFragmentPrint.java:278) 
    at com.microsoft.pdfviewer.PdfFragmentPrint$PdfFragmentPrintDocumentAdapter.onWrite(PdfFragmentPrint.java:213) 
    at android.print.PrintManager$PrintDocumentAdapterDelegate$MyHandler.handleMessage(PrintManager.java:792) 
+0

onWriteはキャンセル信号を受け入れるためです。 – newszer

+0

誰かがonWriteキャンセルを処理する方法を知っていますか?私はonWriteCancelled();を呼び出しますが、それでもonWriteFinished()は実行されます。 – newszer

答えて

0

自分がonWriteFinished(new PageRange[]{PageRange.ALL_PAGES})を呼び出し、全体のPDFファイルを作成します。この場合、ページ範囲が渡されても、システムは選択されたページだけをレンダリングして印刷します。