2017-02-16 2 views
4

Я использую библиотеку this. Я пытаюсь загрузить PDF, находящийся в активах &, он не загружается. Вот где я загрузить его:AndroidPDFViewer - не удается открыть документ pdf в моем приложении

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import com.github.barteksc.pdfviewer.PDFView; 

public class MainActivity extends AppCompatActivity { 

    private PDFView pdfView; 
    private String nameOfPDF = "" + R.string.name_of_pdf; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     pdfView = (PDFView) findViewById(R.id.pdfView); 

     pdfView.fromAsset(nameOfPDF).load(); 
    } 
} 

А вот соответствующий XML:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="ru.webant.projects.mypdfviewer.MainActivity"> 

    <com.github.barteksc.pdfviewer.PDFView 
     android:id="@+id/pdfView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"/> 
</RelativeLayout> 

Применение запускается, но ничего не происходит. Почему это происходит?

ответ

2

Потому что вы не устанавливаете правильное имя файла. Посмотрите здесь:

private String nameOfPDF = "" + R.string.name_of_pdf; 

Это результат: nameOfPDF = SomeIdAsString. То, что вы хотите назвать, - getString():

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    pdfView = (PDFView) findViewById(R.id.pdfView); 

    pdfView.fromAsset(getString(R.string.name_of_pdf)).load(); 
} 
1
private String nameOfPDF = "" + R.string.name_of_pdf; 

Если вы не назвали свой актив некоторым большим, полуслучайным числом, это неверно.

Если R.string.name_of_pdf должен быть идентификатор строкового ресурса с именем файла PDF, используйте:

private String nameOfPDF = getString(R.string.name_of_pdf); 

This sample project демонстрирует, как использовать AndroidPdfViewer для отображения PDF из активов, в том числе в других местах.

Смежные вопросы