0

我正在 Android Studio 中开发一个 Pdf reader android 应用程序,但我不知道如何在 History Fragment 中打开我的 Pdf 文件的完全相同的页面。我使用了 Viewpager2,其中包含三个单独的选项卡(文档、历史记录、收藏夹)作为我的片段。每当我在我的文档片段中单击 Pdf 文件时,它都会被添加到历史片段 pdf 列表中,但问题是当我在历史片段中打开 pdf 时它会打开我的 pdf 文件的第一页。我希望每当我点击我的历史片段中的 pdf 文件时,它应该打开我在我的文档片段中留下的同一页,如果我滚动到我的历史片段 Pdf 文件中的其他页面然后在我的文档片段中,如果我打开同一个文件,它应该打开历史片段 Pdf 文件的最后查看页面。

这是我的 ViewPdf.java 的代码:

public class ViewPdf extends AppCompatActivity {
    public static PDFView pdfView;
   
    static int pagenumber;
    TextView textView;
    BottomNavigationView bottomNavigationView;
    SharedPreferences mprefs;
    SharedPreferences mprefsk;
    SharedPreferences sharedPreference;
    SharedPreferences.Editor editor;


 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view_pdf);
        pdfView = findViewById(R.id.pdfView);
        pdfView.setVisibility(View.VISIBLE);
        loadData();
        textView = (TextView) findViewById(R.id.pagenumber);
   

pdfView.fromFile(DocumentsFragment.pdf.get(getIntent().getIntExtra("Position", -1)))
                        .enableAnnotationRendering(true)
                        .defaultPage(pagenumber)
                        .swipeHorizontal(true)
                        // .scrollHandle(new DefaultScrollHandle(ViewPdf.this))
                        .nightMode(true)
                        .fitEachPage(true)
                        .onPageChange(new OnPageChangeListener() {
                            @Override
                            public void onPageChanged(int page, int pageCount) {
                                pagenumber = page;
                                textView.setText(String.valueOf(pdfView.getCurrentPage() + 1) + "/" + pdfView.getPageCount());
                            }
                        })
                        .pageSnap(true) // snap pages to screen boundaries
                        .pageFling(true)
                        .autoSpacing(false)
                        .spacing(12)
                        .enableAntialiasing(true)
                        .pageFitPolicy(FitPolicy.BOTH)
                        .load();


 public void saveData() {

        pagenumber = pdfView.getCurrentPage();
        sharedPreference = getPreferences(MODE_PRIVATE);
        editor = sharedPreference.edit();
        editor.putInt("page", pagenumber);
        editor.apply();

    }


public void loadData() {
        SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
        pagenumber = sharedPreferences.getInt("page", MODE_PRIVATE);


    }

这是我的 ViewHistoryPdf.java:

     public class ViewHistoryPdf extends AppCompatActivity {
    PDFView pdfView;
   int pagenumber;
    TextView textView;
    BottomNavigationView bottomNavigationView;
    SharedPreferences mprefs;
    SharedPreferences mprefsk;
    SharedPreferences sharedPreference;
    SharedPreferences.Editor editor;
     @Override
 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view_pdf);
        pdfView = findViewById(R.id.pdfView);
        //recyclerView.setVisibility(View.GONE);

        pdfView.setVisibility(View.VISIBLE);

        loadData();
     textView = (TextView) findViewById(R.id.pagenumber);

 pdfView.fromFile(HistoryFragment.pdfHistory.get(getIntent().getIntExtra("History", -1)))
                    .enableAnnotationRendering(true)
                    .defaultPage(pagenumber)
                    .swipeHorizontal(true)
                    // .scrollHandle(new DefaultScrollHandle(ViewPdf.this))
                    .nightMode(true)
                    .fitEachPage(true)
                    .onPageChange(new OnPageChangeListener() {
                        @Override
                        public void onPageChanged(int page, int pageCount) {
                           pagenumber = page;
                            textView.setText(String.valueOf(pdfView.getCurrentPage() + 1) + "/" + pdfView.getPageCount());
                        }
                    })
                    .pageSnap(true) // snap pages to screen boundaries
                    .pageFling(true)
                    .autoSpacing(false)
                    .spacing(12)
                    .enableAntialiasing(true)
                    .pageFitPolicy(FitPolicy.BOTH)
                    .load();



  public void saveData() {
pagenumber=pdfView.getCurrentPage();
sharedPreference = getPreferences(MODE_PRIVATE);
editor = sharedPreference.edit();
editor.putInt("page", pagenumber);
editor.apply();

}
  public void loadData() {
    SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
    pagenumber = sharedPreferences.getInt("page", MODE_PRIVATE);
}
4

1 回答 1

0

假设你的saveData()loadData()作品,(我看不出这些方法在哪里被调用)。您可以致电:

pdfView.jumpTo(pagenumber)

记住pagenumber 应该有正确的页码

于 2021-04-09T17:27:03.387 回答