【发布时间】:2021-07-27 17:31:15
【问题描述】:
我正在使用自定义渲染器在我的应用上显示 pdf 文件。
以下是我的渲染器代码:
主要项目:
public class PdfWebView : WebView
{
public static readonly BindableProperty UriProperty = BindableProperty.Create(propertyName: "Uri",
returnType: typeof(string),
declaringType: typeof(PdfWebView),
defaultValue: default(string));
public string Uri
{
get { return (string)GetValue(UriProperty); }
set { SetValue(UriProperty, value); }
}
}
安卓:
[assembly: ExportRenderer(typeof(PdfWebView), typeof(MyWebViewRenderer))]
namespace Projectname.Droid.Renderer
{
public class MyWebViewRenderer : WebViewRenderer
{
public MyWebViewRenderer(Context context) : base(context)
{
}
protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.WebView> e)
{
base.OnElementChanged(e);
if (Control != null)
{
var customWebView = Element as PdfWebView;
Control.Settings.AllowUniversalAccessFromFileURLs = true;
Control.Settings.JavaScriptEnabled = true;
Control.LoadUrl(string.Format("https://drive.google.com/viewerng/viewer?url={0}", customWebView.Uri.ToString()));
}
}
}
}
Xaml 和 Xaml.cs:
<local:PdfWebView
HorizontalOptions="FillAndExpand"
VerticalOptions="FillAndExpand"
x:Name="pdf_Webview"/>
pdf_Webview.Uri = pdfurl;
但是当我在 android 平台上运行应用程序时,出现以下异常:
System.NullReferenceException: '对象引用未设置为对象的实例。'
没有在 ios 部分使用渲染器,并且 pdf 在那里工作正常。 android部分的实际问题是什么?
【问题讨论】:
-
哪一行抛出异常?
customWebView是否为空? -
@Jason 以下线程上的解决方案正在运行。 docs.microsoft.com/en-us/answers/questions/383713/…
-
@Jason 但是 PDF 文件正在不断加载,请观看下面的视频。 drive.google.com/file/d/1bbr9LTX39AY9CYU6ddvncYs2AtZxY-IS/…
标签: pdf xamarin.forms webview