如何在我的历史片段中打开与我的Pdf文件完全相同的页面



我正在android studio中开发一个Pdf阅读器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);
}

假设saveData()loadData()有效(我不知道这些方法是在哪里调用的(。您可以拨打:

pdfView.jumpTo(pagenumber)

请记住pagenumber应该有正确的页码

最新更新