如何保存用户上次阅读的页码

我正在构建一个 android 应用程序,它通过https://github.com/barteksc/AndroidPdfViewer显示一个特定的 pdf,有很多页面,现在我只是实现了一种从用户最后打开的页面重新打开 pdf 的方法.


我正在使用 SharedPreferences 来存储当前页面,然后在重新加载应用程序后,应用程序将重新打开用户离开的 pdf。


这是我用于存储和检索数据的共享首选项方法


private void storepreferences () {

    PDFView pdfView = findViewById(R.id.pdfView);

    savedpage=pdfView.getCurrentPage();

    SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE);

    SharedPreferences.Editor editor = pref.edit();

    editor.putInt("key_name2", savedpage);

    editor.apply();

}

private void getpreferences () {

    SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE);

    pageNumber = pref.getInt("key_name2", 0);             // getting Integer

}

然后我正在使用 onCreate


@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    storepreferences();

    getpreferences();

同样为了测试,我正在展示


TextView txt = findViewById(R.id.textView2);

txt.setText(String.valueOf(pageNumber));

但是我仍然得到默认值,谁能告诉我我做错了什么?


森林海
浏览 81回答 2
2回答

眼眸繁星

最后我实现了这一点,我之前在 OnCreate 上使用 (storepreferences) 但现在我在 BackPressed 上使用@Overridepublic void onBackPressed() {    DrawerLayout drawer = findViewById(R.id.drawer_layout);    if (drawer.isDrawerOpen(GravityCompat.START)) {        drawer.closeDrawer(GravityCompat.START);    } else {        storepreferences();        super.onBackPressed();    }}之后我在 OnCreate 上检索保存的数据@Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        getpreferences();}我使用上述技术是因为我认为它实际上并没有存储我的数据,因为当我使用 Toast 显示当前页面时,它准确显示了用户所在的页码public void pagestorebutton (){        PDFView pdfView = findViewById(R.id.pdfView);        savedpage = pdfView.getCurrentPage();        Toast myToast = Toast.makeText(this,(String.valueOf(savedpage) ), Toast.LENGTH_SHORT);        myToast.show();        storepreferences();    }在 onCreate 中,我在单击浮动按钮后使用了上面的函数FloatingActionButton fab4 = findViewById(R.id.fab4);        fab4.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                pagestorebutton();            }        });我的方法是通过正确的途径实现我的目标,还是还有其他事情要做??

皈依舞

在 StorePreference 中,首先,尝试放置此代码。editor.commit()进而,editor.apply().
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java