I am developing a Pdf reader android app in Android studio but I dont know how do I open the exact same page of my Pdf file in History Fragment. I have used Viewpager2 which contains three separate tabs(Document,History,Favourites) for my Fragments.Whenever I click on Pdf file in my Documents Fragment it gets added into History Fragment pdf list but the problem is when I open the pdf in History fragment it opens the first page of my pdf file.I want that whenever I click on pdf file in my history fragment it should open that same page that I left reading in my Documents Fragment and if I scroll to other page in my History Fragment Pdf file then in my Documents Fragment if I open the same file it should open the last viewed page of History fragment Pdf file.
Here is code of my 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);
}
Here is my 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);
}