为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

森林海 2023-03-02 09:53:50
我正在构建一个 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@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    storepreferences();    getpreferences();同样为了测试,我正在展示TextView txt = findViewById(R.id.textView2);txt.setText(String.valueOf(pageNumber));但是我仍然得到默认值,谁能告诉我我做错了什么?
查看完整描述

2 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

最后我实现了这一点,我之前在 OnCreate 上使用 (storepreferences) 但现在我在 BackPressed 上使用


@Override

public 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();

            }

        });

我的方法是通过正确的途径实现我的目标,还是还有其他事情要做??


查看完整回答
反对 回复 2023-03-02
?
皈依舞

TA贡献1851条经验 获得超3个赞

在 StorePreference 中,首先,尝试放置此代码。

editor.commit()

进而,

editor.apply().


查看完整回答
反对 回复 2023-03-02
  • 2 回答
  • 0 关注
  • 78 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信