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

如何检测com.github.barteksc:android-pdf-viewer的PDFView未加载PDF

检测AndroidPdfViewer中PDFView是否加载了PDF
  • 你当前用pdfView.getPageCount() == 0判断PDF是否加载的方式是可行的,这和库内部判断pdfFile为空的逻辑结果一致。
  • 若想更贴合库内部逻辑,又无法直接访问私有成员pdfFile,可以试试这两种方案:
    1. 反射访问私有成员:通过反射获取PDFView里的pdfFile对象,判断是否为null。代码示例:
      try {
          Field pdfFileField = PDFView.class.getDeclaredField("pdfFile");
          pdfFileField.setAccessible(true);
          Object pdfFile = pdfFileField.get(pdfView);
          if (pdfFile == null) {
              // 未加载PDF
          }
      } catch (NoSuchFieldException | IllegalAccessException e) {
          e.printStackTrace();
          // 反射失败时,用getPageCount()作为备选判断
          if (pdfView.getPageCount() == 0) {
              // 未加载PDF
          }
      }
      
      注意:反射依赖库的内部实现,后续库更新如果修改了pdfFile的字段名或权限,这个方法会失效,建议只当备选。
    2. 监听加载状态:调用加载PDF的方法时,通过OnLoadCompleteListener记录加载状态。代码示例:
      private boolean isPdfLoaded = false;
      
      pdfView.fromFile(pdfFile)
              .onLoad(new OnLoadCompleteListener() {
                  @Override
                  public void loadComplete(int nbPages) {
                      isPdfLoaded = true;
                  }
              })
              .load();
      
      // 需要判断时直接使用该变量
      if (!isPdfLoaded) {
          // 未加载PDF
      }
      
      这种方式基于库的公开API,更可靠,不会受内部实现变更影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 04:45:32