Попытка вызвать сбой виртуального метода в AndroidPdfViewer
Использование пакета AndroidPdfViewer. Мой код build.gradle:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
implementation("com.github.bumptech.glide:glide:4.5.0") {
exclude group: "com.android.support"
}
implementation "com.android.support:support-fragment:26.1.0"
compile 'com.github.barteksc:android-pdf-viewer:2.8.2'
}
XML-файл активности:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.github.barteksc.pdfviewer.PDFView
android:id="@+id/pdfView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
Код деятельности:
package eu.myapp.myapp;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.github.barteksc.pdfviewer.PDFView;
public class activity_fact_sheet extends AppCompatActivity {
PDFView pdfView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PDFView pdfView = (PDFView) findViewById(R.id.pdfView);
pdfView.fromAsset("file2.pdf").load();
}
}
file2.pdf находится в приложении> src > main > assets
Ошибка при запуске:
01-18 11:59:25.475 29674-29674/eu.myapp.myapp E/AndroidRuntime: FATAL EXCEPTION: main
Process: eu.myapp.myapp, PID: 29674
java.lang.RuntimeException: Unable to start activity ComponentInfo{eu.myapp.myapp/eu.myapp.myapp.activity_fact_sheet}: java.lang.NullPointerException: Attempt to invoke virtual method 'com.github.barteksc.pdfviewer.PDFView$Configurator com.github.barteksc.pdfviewer.PDFView.fromAsset(java.lang.String)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2924)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2985)
at android.app.ActivityThread.-wrap14(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1635)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6692)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'com.github.barteksc.pdfviewer.PDFView$Configurator com.github.barteksc.pdfviewer.PDFView.fromAsset(java.lang.String)' on a null object reference
at eu.myapp.myapp.activity_fact_sheet.onCreate(activity_fact_sheet.java:17)
at android.app.Activity.performCreate(Activity.java:6912)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2877)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2985)
at android.app.ActivityThread.-wrap14(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1635)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6692)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)
Шаги, предпринятые для ее решения:
добавленной PDFView pdfView;
к коду активности выше @Override
и под public class activity_fact_sheet extends AppCompatActivity {
Также проверил, было ли это проблемой с моим методом открытия активности (не было).
Кажется, ошибка брошена на pdfView.fromAsset("file2.pdf").load();
в коде активности. Мне кажется, что он не может найти file2.pdf в активах, но я, вероятно, ошибаюсь.
Приложение вылетает при попытке открыть действие.
Пытался реализовать это с помощью этого видео.
2 ответа
Хорошо, я нашел другую тему на stackexchange (кроме бесчисленных тем об исключениях nullpointer - которые мне не помогли). Это код, который работает. Просто импортировать
compile 'com.github.barteksc:android-pdf-viewer:2.8.2'
compile 'org.apache.commons:commons-collections4:4.1'
в вашем файле сборки Gradle.
Затем убедитесь, что у вас есть <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
разрешение в AndroidManifest.xml. (Вы уже должны были иметь это в любом случае.)
Затем обязательно скопируйте его код в свою деятельность, где вы хотите показать PDF. + Изменить public static final string SAMPLE_FILE
к фактическому pdf, который вы хотите показать (в папке с активами).
Если вы получили ошибку в TAG
в Log.e(TAG, String.format("%s %s, p %d", sep, b.getTitle(), b.getPageIdx()));
ты должен добавить private static final String TAG = "youractivitynamehere";
только под public static final String SAMPLE_FILE = "yourfilehere.pdf";
Это все! Надеюсь, что кто-то еще ищет эту проблему найдет это.
Добавьте этот код в свой файл XML
<com.github.barteksc.pdfviewer.PDFView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/pdfView"
></com.github.barteksc.pdfviewer.PDFView>