我在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功能,我关注this guide。问题是,我设法到达了openPdfFile,这意味着我已经将exportSuccess设置为true,但是,从单击导出按钮的片段中,它始终返回false,因此无法关闭具有webview的片段。 / p>
有什么想法吗?谢谢!
答案 0 :(得分:0)
在传递片段 ResultFragment上下文的上下文后,您可以使用相同的方法来使用该上下文来关闭对话框,例如context.dismiss();
。
您随附的代码段似乎还可以,如果它以同步方式运行,则应该可以正常工作。
答案 1 :(得分:0)
看来,您的方法在PdfView.createWebPrintJob()完成之前就已返回。
您可以在export中传递回调(ResultFragment上下文,WebView webViewResult,ICallback回调);
public interface ICallback{
void onSuccess();
void onFailure();
}
分别调用PdfView.createWebPrintJob()中的方法,在回调的实现中,您可以关闭对话框。
Ankit