如何检测com.github.barteksc:android-pdf-viewer的PDFView未加载PDF
检测AndroidPdfViewer中PDFView是否加载了PDF
- 你当前用
pdfView.getPageCount() == 0判断PDF是否加载的方式是可行的,这和库内部判断pdfFile为空的逻辑结果一致。 - 若想更贴合库内部逻辑,又无法直接访问私有成员
pdfFile,可以试试这两种方案:- 反射访问私有成员:通过反射获取
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的字段名或权限,这个方法会失效,建议只当备选。 - 监听加载状态:调用加载PDF的方法时,通过
OnLoadCompleteListener记录加载状态。代码示例:
这种方式基于库的公开API,更可靠,不会受内部实现变更影响。private boolean isPdfLoaded = false; pdfView.fromFile(pdfFile) .onLoad(new OnLoadCompleteListener() { @Override public void loadComplete(int nbPages) { isPdfLoaded = true; } }) .load(); // 需要判断时直接使用该变量 if (!isPdfLoaded) { // 未加载PDF }
- 反射访问私有成员:通过反射获取
内容的提问来源于stack exchange,提问作者AlessandroF
相关产品推荐
相关产品推荐

