2017-02-16 129 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,在其他地方。

相關問題