You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中barteksc PDFView横竖屏切换跳转首页如何解决

问题原因

横竖屏切换属于Android系统的配置变更事件,默认情况下系统会销毁并重建当前Activity,你的代码每次在onCreate生命周期中都会重新加载PDF文件,默认从第1页(对应库的索引0)开始渲染,因此切换后会回到首页。

解决方案

以下两种方案任选其一即可解决问题:

方案1:配置Manifest禁止Activity重建(推荐,操作最简)

直接在项目的AndroidManifest.xml中找到对应Activity的配置,添加configChanges属性,告知系统对应配置变更时不需要销毁重建Activity,PDF的浏览状态会自动保留:

<activity
    android:name=".Activity2"
    android:exported="true"
    android:configChanges="orientation|screenSize|screenLayout|keyboardHidden">
    <!-- 你原有Activity的其他配置保持不变 -->
</activity>

添加后无需修改其他业务代码即可生效。

方案2:手动保存恢复页码(符合Android生命周期规范)

如果不希望修改Manifest配置,可以通过Activity的状态保存机制,在销毁前记录当前浏览页码,重建时加载PDF直接跳转到对应页码,修改后的Java代码如下:

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

import com.github.barteksc.pdfviewer.PDFView;

public class Activity2 extends AppCompatActivity {
    // 页码保存的键值
    private static final String KEY_CURRENT_PAGE = "current_page";
    PDFView book1;
    // 存储当前浏览页码,库的页码从0开始计数,默认第一页为0
    private int currentPage = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_2);

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

        // 重建时恢复之前保存的页码
        if (savedInstanceState != null) {
            currentPage = savedInstanceState.getInt(KEY_CURRENT_PAGE, 0);
        }

        book1.fromAsset("Problems-of-Life-and-Mind.-Second-series.pdf")
                .spacing(10)
                // 加载PDF时指定跳转的页码
                .defaultPage(currentPage)
                .load();
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        // Activity销毁前保存当前浏览页码
        currentPage = book1.getCurrentPage();
        outState.putInt(KEY_CURRENT_PAGE, currentPage);
        super.onSaveInstanceState(outState);
    }
}

内容的提问来源于stack exchange,提问作者Sojol Rabby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 00:48:01