您好我正在使用.net标准处理Xamarin表单可移植项目我的应用程序中有一个页面需要在本地加载html内容。当我在Android设备上运行应用程序时,构建失败并给出了这个错误:
严重级代码描述项目文件行抑制状态 错误CS0234类型或命名空间名称'上下文'在...中不存在 命名空间' AppName.Forms' (你错过了一个程序集引用吗?)
Here's the example i'm going off of
这里是我收到错误的班级:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Xamarin.Forms;
using AppName.Droid;
using Xamarin.Forms.Platform.Android;
using Android.Webkit;
using System.ComponentModel;
using AppName.Forms;
[assembly: ExportRenderer(typeof(HybridWebView), typeof(AppName.Droid.HybridWebViewRenderer))]
namespace AppName.Droid
{
public class HybridWebViewRenderer : ViewRenderer<HybridWebView, Android.Webkit.WebView>
{
const string JavaScriptFunction = "function invokeCSharpAction(data){jsBridge.invokeAction(data);}";
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (Control != null)
{
Control.Settings.BuiltInZoomControls = true;
Control.Settings.DisplayZoomControls = true;
}
base.OnElementPropertyChanged(sender, e);
}
protected override void OnElementChanged(ElementChangedEventArgs<HybridWebView> e)
{
base.OnElementChanged(e);
if (Control == null)
{
// |
//Error is here \|/
var webView = new Android.Webkit.WebView(Forms.Context);
webView.Settings.JavaScriptEnabled = true;
SetNativeControl(webView);
Control.Settings.DomStorageEnabled = true;
}
if (e.OldElement != null)
{
Control.RemoveJavascriptInterface("jsBridge");
var hybridWebView = e.OldElement as HybridWebView;
hybridWebView.Cleanup();
}
if (e.NewElement != null)
{
Control.AddJavascriptInterface(new JSBridge(this), "jsBridge");
Control.LoadUrl(string.Format("file:///android_asset/Content/{0}", Element.Uri));
InjectJS(JavaScriptFunction);
}
}
void InjectJS(string script)
{
if (Control != null)
{
Control.LoadUrl(string.Format("javascript: {0}", script));
}
}
}
}
任何帮助都会令人惊叹!
提前致谢!
答案 0 :(得分:0)
就像Yuri在评论中已经说过的那样;您的命名空间之间存在一些歧义。因为重构所有这些工作可能太多了,最简单的就是在这种情况下拼出完整的命名空间。
将您的代码更改为var webView = new Android.Webkit.WebView(Xamarin.Forms.Context);