android - 如何在我的历史片段中打开我的 Pdf 文件的完全相同的页面?
问题描述
我正在 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);
}
解决方案
假设你的saveData()
和loadData()
作品,(我看不出这些方法在哪里被调用)。您可以致电:
pdfView.jumpTo(pagenumber)
记住pagenumber
应该有正确的页码
推荐阅读
- spring - SeekToCurrentBatchErrorHandler 对死 DLQ 的支持
- lustre - collectl 说“系统没有安装光泽模块”
- karabiner - 如何交换方括号和大括号(karabiner)
- c++ - 如何使用 C 指针的自定义删除器创建 unique_ptr?
- javascript - 将层次数组转换为平面数组
- python - 如何使用python更改xml文件的特定值
- vhdl - 无符号定点数(ufixed)和无符号数之间的VHDL算术运算
- perl - 将 SQL 查询的结果提取到 PERL 中的哈希映射中
- ssl - MAMP PRO - 为外部 POST 调用指定 .crt 和 .key 文件的路径
- python - 如何将值传播到熊猫系列的前 n 行