java - 同步代码执行
问题描述
我在 Android Java 中执行函数时遇到了一些问题。我有一个带有 webview 的片段,单击按钮后,我将在视图模型中执行导出到 pdf 功能。如果成功,那么我继续使用 webview 关闭片段。
这是我调用导出到 pdf 函数的代码:
@Click(R.id.buttonExport)
void buttonExportClicked(View v){
SummaryViewModel summaryViewModel = ViewModelProviders.of(this).get(SummaryViewModel.class);
boolean exportSuccess = summaryViewModel.export(ResultFragment.this, webViewResult);
if(exportSuccess == true) dismiss();
}
在我的视图模型中:
private boolean exportSuccess;
public boolean export(ResultFragment context, WebView webViewResult) {
File directory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS + "/PDFTest/");
String fileName = "Summary.pdf";
PdfView.createWebPrintJob(context.getActivity(), webViewResult, directory, fileName, new PdfView.Callback() {
@Override
public void success(String path) {
PdfView.openPdfFile(context.getActivity(), context.getString(R.string.app_name), "Do you want to open the " + fileName + " file?", path);
exportSuccess = true;
}
@Override
public void failure() {
exportSuccess = false;
}
});
return exportSuccess;
}
对于导出到 pdf 功能,我正在遵循本指南。问题是,我设法到达了 openPdfFile,这意味着我已经将 exportSuccess 设置为 true,但是,从单击导出按钮的片段中,它始终返回 false,因此无法关闭带有 webview 的片段。
有任何想法吗?谢谢!
解决方案
由于您已经传递了片段ResultFragment 上下文的上下文,因此您可以在相同的方法中使用上下文来关闭对话框,例如context.dismiss();
. 您附加的代码段似乎没问题,如果它以同步方式运行,它应该可以工作。
推荐阅读
- python-3.x - 将 Dict 附加到每个请求的嵌套列表
- axios - Strapi $AND 查询过滤器返回使用 $OR 过滤的值
- bash - 从 Chrome OS 上的终端触发通知
- python - background_task.py 不显示消息 - Python
- html - 如何删除html div元素之间的间距?
- c++ - 使用特殊字符获取正确长度的字符串
- c++ - 如何将原始字符串文字传递给 [[deprecated(message)]] 属性?
- ios - 苹果代码签名后,由于二进制文件受限,dylib 库未加载
- amazon-web-services - 我在 AWS 中托管了我的 REST API JAX-RS Jersey Java 项目,所有 API 在除 Jio(印度)之外的所有服务提供商网络上都运行良好
- c# - 如何水平滚动n个stackpanel的stackpanel?