Every time I edit java code PDFRendererBasicFragment
mFileDescriptor = context.getAssets().openFd("sample.pdf").getParcelFileDescriptor();
to another PDF file placed in the resource folder, the application crashes.
Logcat reports:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.android.pdfrendererbasic/com.example.android.pdfrendererbasic.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.graphics.pdf.PdfRenderer.getPageCount()' on a null object reference
Why is this happening? I even tried renaming my PDF to sample.pdf before creating it, and it will work anyway. Everything works fine with the source code, just won't let me replace the PDF.
Stack trace:
02-11 11:11:50.130 18201-18201/com.example.android.pdfrendererbasic I/art: Not late-enabling -Xcheck:jni (already on) 02-11 11:11:50.130 18201-18201/com.example.android.pdfrendererbasic I/art: Late-enabling JIT 02-11 11:11:50.132 18201-18201/com.example.android.pdfrendererbasic I/art: JIT created with code_cache_capacity=2MB compile_threshold=1000 02-11 11:11:50.201 18201-18201/com.example.android.pdfrendererbasic W/System: ClassLoader referenced unknown path: /data/app/com.example.android.pdfrendererbasic-1/lib/x86 02-11 11:11:50.252 18201-18201/com.example.android.pdfrendererbasic W/System.err: java.io.IOException: cannot create document. Error: 3 02-11 11:11:50.253 18201-18201/com.example.android.pdfrendererbasic W/System.err: at android.graphics.pdf.PdfRenderer.nativeCreate(Native Method) 02-11 11:11:50.253 18201-18201/com.example.android.pdfrendererbasic W/System.err: at android.graphics.pdf.PdfRenderer.<init>(PdfRenderer.java:153) 02-11 11:11:50.253 18201-18201/com.example.android.pdfrendererbasic W/System.err: at com.example.android.pdfrendererbasic.PdfRendererBasicFragment.openRenderer(PdfRendererBasicFragment.java:141) 02-11 11:11:50.253 18201-18201/com.example.android.pdfrendererbasic W/System.err: at com.example.android.pdfrendererbasic.PdfRendererBasicFragment.onAttach(PdfRendererBasicFragment.java:108) 02-11 11:11:50.253 18201-18201/com.example.android.pdfrendererbasic W/System.err: at android.app.Fragment.onAttach(Fragment.java:1380) 02-11 11:11:50.253 18201-18201/com.example.android.pdfrendererbasic W/System.err: at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:932) 02-11 11:11:50.253 18201-18201/com.example.android.pdfrendererbasic W/System.err: at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1148) 02-11 11:11:50.253 18201-18201/com.example.android.pdfrendererbasic W/System.err: at android.app.BackStackRecord.run(BackStackRecord.java:793) 02-11 11:11:50.253 18201-18201/com.example.android.pdfrendererbasic W/System.err: at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1535) 02-11 11:11:50.253 18201-18201/com.example.android.pdfrendererbasic W/System.err: at android.app.FragmentController.execPendingActions(FragmentController.java:325) 02-11 11:11:50.253 18201-18201/com.example.android.pdfrendererbasic W/System.err: at android.app.Activity.performStart(Activity.java:6252) 02-11 11:11:50.253 18201-18201/com.example.android.pdfrendererbasic W/System.err: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379) 02-11 11:11:50.253 18201-18201/com.example.android.pdfrendererbasic W/System.err: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 02-11 11:11:50.253 18201-18201/com.example.android.pdfrendererbasic W/System.err: at android.app.ActivityThread.-wrap11(ActivityThread.java) 02-11 11:11:50.253 18201-18201/com.example.android.pdfrendererbasic W/System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 02-11 11:11:50.253 18201-18201/com.example.android.pdfrendererbasic W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102) 02-11 11:11:50.253 18201-18201/com.example.android.pdfrendererbasic W/System.err: at android.os.Looper.loop(Looper.java:148) 02-11 11:11:50.253 18201-18201/com.example.android.pdfrendererbasic W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5417) 02-11 11:11:50.253 18201-18201/com.example.android.pdfrendererbasic W/System.err: at java.lang.reflect.Method.invoke(Native Method) 02-11 11:11:50.253 18201-18201/com.example.android.pdfrendererbasic W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 02-11 11:11:50.254 18201-18201/com.example.android.pdfrendererbasic W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 02-11 11:11:51.082 18201-18201/com.example.android.pdfrendererbasic D/AndroidRuntime: Shutting down VM 02-11 11:11:51.082 18201-18201/com.example.android.pdfrendererbasic E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.android.pdfrendererbasic, PID: 18201 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.android.pdfrendererbasic/com.example.android.pdfrendererbasic.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.graphics.pdf.PdfRenderer.getPageCount()' on a null object reference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) at android.app.ActivityThread.-wrap11(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.graphics.pdf.PdfRenderer.getPageCount()' on a null object reference at com.example.android.pdfrendererbasic.PdfRendererBasicFragment.showPage(PdfRendererBasicFragment.java:163) at com.example.android.pdfrendererbasic.PdfRendererBasicFragment.onViewCreated(PdfRendererBasicFragment.java:101) at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:988) at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1148) at android.app.BackStackRecord.run(BackStackRecord.java:793) at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1535) at android.app.FragmentController.execPendingActions(FragmentController.java:325) at android.app.Activity.performStart(Activity.java:6252) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) at android.app.ActivityThread.-wrap11(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
PDFRendererBasicFragment.java:
package com.example.android.pdfrendererbasic; import android.app.Activity; import android.app.Fragment; import android.content.Context; import android.graphics.Bitmap; import android.graphics.pdf.PdfRenderer; import android.os.Bundle; import android.os.ParcelFileDescriptor; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.ImageView; import android.widget.Toast; import java.io.IOException; public class PdfRendererBasicFragment extends Fragment implements View.OnClickListener { private static final String STATE_CURRENT_PAGE_INDEX = "current_page_index"; private ParcelFileDescriptor mFileDescriptor; private PdfRenderer mPdfRenderer; private PdfRenderer.Page mCurrentPage; private ImageView mImageView; private Button mButtonPrevious; private Button mButtonNext; public PdfRendererBasicFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_pdf_renderer_basic, container, false); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState);
emvee source share