0

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);
}
Knowledge hub
  • 51
  • 1
  • 8

1 Answers1

0

Assumuing your saveData() and loadData() works, (I don't see where those methods are called). You can call:

pdfView.jumpTo(pagenumber)

Keep in mind pagenumber should have the right page number

javdromero
  • 1,850
  • 2
  • 11
  • 19
  • THanks but you didnt got my problem, everything is working fine the only problem is I want to save the same page number in both history fragment(if file is present there) and document fragment.I know about jump to but i am trying to save the page number in both the fragment so if a user open it from document fragment or history fragment he should see the same page where he left. – Knowledge hub Apr 09 '21 at 18:01
  • Then you should not only save the page number, but also some sort of id that identifies that pdf, and it should stored in a database table, because your document list is more than one item so you want per pdf know which page the user left, you can't overwrite "page". – javdromero Apr 09 '21 at 19:11
  • 1
    Thanks @javdromero you were right using shared preference wont work because that would save the page number of only one pdf at a time so i have to use database in order to save last page of multiple pdf. – Knowledge hub Apr 24 '21 at 05:48