Android PlugPdf在LogDog.Print方法处崩溃

Android PlugPdf在LogDog.Print方法处崩溃,android,pdfviewer,Android,Pdfviewer,我正在使用pdf sdk从url打开pdf。我尝试了示例项目,它工作正常,然后我用我的pdf url替换了url,它再次被打开,然后我将SimpleReaderActivity.java的代码复制到我的项目中,然后我得到了这个错误 01-30 19:20:39.644: E/AndroidRuntime(28122): FATAL EXCEPTION: main 01-30 19:20:39.644: E/AndroidRuntime(28122): java.lang.RuntimeExcep

我正在使用pdf sdk从url打开pdf。我尝试了示例项目,它工作正常,然后我用我的pdf url替换了url,它再次被打开,然后我将SimpleReaderActivity.java的代码复制到我的项目中,然后我得到了这个错误

01-30 19:20:39.644: E/AndroidRuntime(28122): FATAL EXCEPTION: main
01-30 19:20:39.644: E/AndroidRuntime(28122): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ownersvault.ownersvault/com.ownersvault.ownersvault.home.DocViewer}: java.lang.NullPointerException
01-30 19:20:39.644: E/AndroidRuntime(28122):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2245)
01-30 19:20:39.644: E/AndroidRuntime(28122):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2295)
01-30 19:20:39.644: E/AndroidRuntime(28122):    at android.app.ActivityThread.access$700(ActivityThread.java:150)
01-30 19:20:39.644: E/AndroidRuntime(28122):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1280)
01-30 19:20:39.644: E/AndroidRuntime(28122):    at android.os.Handler.dispatchMessage(Handler.java:99)
01-30 19:20:39.644: E/AndroidRuntime(28122):    at android.os.Looper.loop(Looper.java:137)
01-30 19:20:39.644: E/AndroidRuntime(28122):    at android.app.ActivityThread.main(ActivityThread.java:5279)
01-30 19:20:39.644: E/AndroidRuntime(28122):    at java.lang.reflect.Method.invokeNative(Native Method)
01-30 19:20:39.644: E/AndroidRuntime(28122):    at java.lang.reflect.Method.invoke(Method.java:511)
01-30 19:20:39.644: E/AndroidRuntime(28122):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
01-30 19:20:39.644: E/AndroidRuntime(28122):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
01-30 19:20:39.644: E/AndroidRuntime(28122):    at dalvik.system.NativeStart.main(Native Method)
01-30 19:20:39.644: E/AndroidRuntime(28122): Caused by: java.lang.NullPointerException
01-30 19:20:39.644: E/AndroidRuntime(28122):    at com.logdog.Worker.Worker.PrintLog(Worker.java:148)
01-30 19:20:39.644: E/AndroidRuntime(28122):    at com.logdog.LogDog.Print(LogDog.java:75)
01-30 19:20:39.644: E/AndroidRuntime(28122):    at com.ownersvault.ownersvault.home.DocViewer.printHeapState(DocViewer.java:340)
01-30 19:20:39.644: E/AndroidRuntime(28122):    at com.ownersvault.ownersvault.home.DocViewer.onCreate(DocViewer.java:86)
01-30 19:20:39.644: E/AndroidRuntime(28122):    at android.app.Activity.performCreate(Activity.java:5276)
01-30 19:20:39.644: E/AndroidRuntime(28122):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)
01-30 19:20:39.644: E/AndroidRuntime(28122):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2209)
01-30 19:20:39.644: E/AndroidRuntime(28122):    ... 11 more
它在这一行显示错误

LogDog.Print(Level.DEBUG, "Heap - max: " + maxMemory + ", total: "
        + totalMemory + ", free: " + freeMemory + ", alloc: "
        + allocMemory);
我的活动课

public class DocViewer extends Activity {

    String openMethod ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        PropertyManager.setScrollFrictionCoef(1);
        PropertyManager.setScrollVelocityCoef(1);
        PropertyManager.setPreviewQualityCoef(1.5);
        CheckBoxField.setGlobalCustomPainter(new MyCheckBoxPainter(this));

//      Intent intent = getIntent();
        openMethod = "URL";
        if (openMethod != null && !("").equals(openMethod)) {
            if (openMethod.startsWith("DATA")) {// DATA open
                openData();
            } else if (openMethod.startsWith("URL")) {// URL open
                openUrl();
            } else if(openMethod.startsWith("PATH")) {// FILE_PATH open
                open(openMethod.substring(openMethod.indexOf(":") + 1));
            }
        } else {
            openData();// DATA open is default
        }
        printHeapState();
    }

    SimpleDocumentReader mViewer;

    protected void openData() {
        String fileName = new String("Gone_With_the_Wind.pdf");
        AssetManager am = getResources().getAssets();
        byte[] data = null;
        try {
            InputStream is = am.open(fileName);

            int size = is.available();
            if (size > 0) {
                data = new byte[size];
                is.read(data);
            }

            is.close();
        } catch (Exception ex) {
        }

        mViewer = SimpleReaderFactory.createSimpleViewer(this, mViewerListener);
        mViewer.setPageViewListener(mPageViewListener);
        mViewer.openData(data, data.length, "");
        mViewer.setTitle("Sample");
        mViewer.setPageDisplayMode(PageDisplayMode.VERTICAL);
    }

    protected void open(String path) {
        mViewer = SimpleReaderFactory.createSimpleViewer(this, mViewerListener);
        mViewer.openFile(path, "");
        mViewer.setPageViewListener(mPageViewListener);
        mViewer.setTitle("Sample");
    }

    protected void openUrl() {
        String url = "http://cs.brown.edu/~pff/papers/seg-ijcv.pdf";
        RelativeLayout relativeLayout = new RelativeLayout(this);
        mViewer = SimpleReaderFactory.createSimpleViewer(this, mViewerListener);
        mViewer.setPageViewListener(mPageViewListener);
        mViewer.openUrl(url, "");
        mViewer.setTitle("Sample");
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        mViewer.refreshLayout();
        super.onConfigurationChanged(newConfig);
    }

    SimpleDocumentReaderListener mViewerListener = new SimpleDocumentReaderListener() {

        @Override
        public void onLoadFinish(DocumentState.OPEN state) {
            LogDog.Print(Level.INFO, "state::"+state);
            if (state == OPEN.SUCCESS) {
                mViewer.setAnnotEventLisener(mAnnotEventListener);

                testSetFieldState();
                testSetFieldValue();
            }   
        }

        private void testSetFieldValue() {
            ReaderView readerView = mViewer.getReaderView();
            readerView.setFieldValue(0, "TextField1[0]", "TEST3");

            LogDog.Print(
                    Level.DEBUG,
                    "test1 fieldValue: "
                            + readerView.getFieldValue(0, "TextField1[0]"));
        }

        private void testSetFieldState() {
            ReaderView readerView = mViewer.getReaderView();
            readerView.setFieldState(0, "test1", FieldState.READONLY);
            readerView.setFieldState(0, "test2", FieldState.DISABLE);

            LogDog.Print(Level.DEBUG,
                    "test1 fieldState: " + readerView.getFieldState(0, "test1"));
            LogDog.Print(Level.DEBUG,
                    "test2 fieldState: " + readerView.getFieldState(0, "test2"));

            readerView.setFieldState(0, "test1", FieldState.ENABLE);
            LogDog.Print(Level.DEBUG,
                    "test1 fieldState: " + readerView.getFieldState(0, "test1"));
        }
    };

    AnnotEventListener mAnnotEventListener = new AnnotEventListener() {

        @Override
        public boolean onTapUp(BaseAnnot annot) {
            return false;
        }

        @Override
        public boolean onLongPress(BaseAnnot annot) {
            return false;
        }
    };

    PageViewListener mPageViewListener = new PageViewListener() {

        @Override
        public void cachePageBitmap(int pageIdx, Bitmap bitmap) {
        }

        @Override
        public void onAnnotationList(int pageIdx, List<BaseAnnot> annotList) {

            LogDog.Print(Level.DEBUG, "onAnnotationList pageIdx : " + pageIdx);
            for (BaseAnnot annot : annotList) {
                StringBuilder builder = new StringBuilder();
                builder.append("Annot Info - ");
                builder.append("pageIdx: " + annot.getPageIdx());
                builder.append(", type: " + annot.getType());

                LogDog.Print(Level.DEBUG, builder.toString());
            }
        }

        @Override
        public void onFieldList(int pageIdx, List<BaseField> fieldList) {
            LogDog.Print(Level.DEBUG, "PageIdx: " + pageIdx);

            for (BaseField field : fieldList) {
                LogDog.Print(Level.DEBUG, "Acroform type: " + field.getType());

                if (field.getType().equals("TEXT_FIELD")) {
                    LogDog.Print(Level.DEBUG, "TEXT_FIELD uid: " + field.getUID());
                    field.setListener(new FieldEventListener() {

                        @Override
                        public boolean onTapUp(BaseField field) {
                            LogDog.Print(Level.DEBUG, "Acroform onTapUp type: " + field.getType());
                            return false;
                        }

                        @Override
                        public boolean onFocusChange(BaseField field,
                                boolean hasFocus) {
                            return false;
                        }

                        @Override
                        public boolean onChangedValue(BaseField field) {
                            return false;
                        }
                    });

                } else if (field.getType().equals("CHECK_BOX")) {
                    LogDog.Print(Level.DEBUG, "Acroform CHECK_BOX uid: " + field.getUID());
                    field.setListener(new FieldEventListener() {

                        @Override
                        public boolean onTapUp(BaseField field) {
                            LogDog.Print(Level.DEBUG, "Acroform onTapUp type: " + field.getType());
                            return false;
                        }

                        @Override
                        public boolean onFocusChange(BaseField field, boolean hasFocus) {
                            return false;
                        }

                        @Override
                        public boolean onChangedValue(BaseField field) {
                            return false;
                        }
                    });

                } else if (field.getType().equals("BUTTON")) {
                    ButtonField btnField = (ButtonField) field;
                    btnField.setAlphaBitmap(BitmapFactory.decodeResource(
                            getResources(), R.drawable.btn_brightness_on), true);
                    LogDog.Print(Level.DEBUG, "Acroform BUTTON uid: " + field.getUID());
                    field.setListener(new FieldEventListener() {

                        @Override
                        public boolean onTapUp(BaseField field) {
                            LogDog.Print(Level.DEBUG, "Acroform onTapUp type: " + field.getType());
                            return false;
                        }

                        @Override
                        public boolean onFocusChange(BaseField field,
                                boolean hasFocus) {
                            return false;
                        }

                        @Override
                        public boolean onChangedValue(BaseField field) {
                            return false;
                        }
                    });

                } else if (field.getType().equals("RADIO_BUTTON")) {
                    LogDog.Print(Level.DEBUG, "Acroform RADIO_BUTTON uid: " + field.getUID() + " title: " + field.getTitle());
                    field.setListener(new FieldEventListener() {

                        @Override
                        public boolean onTapUp(BaseField field) {
                            LogDog.Print(Level.DEBUG, "Acroform onTapUp type: " + field.getType());
                            return false;
                        }

                        @Override
                        public boolean onFocusChange(BaseField field, boolean hasFocus) {
                            return false;
                        }

                        @Override
                        public boolean onChangedValue(BaseField field) {
                            return false;
                        }
                    });

                }
            }
        }

        @Override
        public void onPageLoadFinish() {

        }

        @Override
        public void onAnnotationEdited(List<BaseAnnot> annotList) {
        }
    };

    @Override
    protected void onPause() {
        super.onPause();
        //ReaderView readerView = mViewer.getReaderView();
        //readerView.save();
        //readerView.saveAsFile(TARGET_PATH);
    }

    @Override
    protected void onStop() {
        super.onStop();
        //mViewer.clear();
    };

    private void printHeapState() {
        if (Runtime.getRuntime() == null) return ;
        long maxMemory = Runtime.getRuntime().maxMemory();
        long totalMemory = Runtime.getRuntime().totalMemory();
        long freeMemory = Runtime.getRuntime().freeMemory();
        long allocMemory = totalMemory - freeMemory;

    }

    @Override
    protected void onDestroy() {
        mViewer.save(); // if you opened this Activity by openData(...), it will save root directory of externel storage on your device. 
        mViewer.clear();
        super.onDestroy();
    }
}

谢谢

我想我们需要更多地了解您的代码。它与SimpleReaderActivity代码完全相同,但我可以在这里向您展示