【发布时间】:2015-06-15 16:19:32
【问题描述】:
我正在使用 Xamarin 编写一个 Android 应用程序,在该应用程序中,我有一个 webview 需要在创建应用程序时加载,在它完全加载后,我将一些 javascript 调用到 HTML 页面中进行设置图表。
我正在尝试使用自定义WebChromeClient 来覆盖OnProgressChanged 方法,当它完全加载时,它会调用我的MainActivity 中的一个方法。
这里是MainActivity 代码:
using System;
using System.Text;
using System.Timers;
using System.Collections;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using Android.Text;
using Android.Text.Style;
using Android.Webkit;
public class MainActivity : Activity
{
WebView graph;
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
SetContentView (Resource.Layout.Main);
graph = FindViewById<WebView>(Resource.Id.webGraph);
//Initializes the WebView
graph.SetWebChromeClient(new myWebChromeClient());
graph.Settings.JavaScriptEnabled = true;
graph.LoadUrl("file:///android_asset/graph.html");
我创建的myWebChromeClient 类看起来像这样:
class myWebChromeClient : WebChromeClient
{
public override void OnProgressChanged(WebView view, int newProgress)
{
base.OnProgressChanged(view, newProgress);
if (newProgress == 100) {MainActivity.setUpGraph();}
}
}
myWebChromeClient 在MainActivity 内,但我无法访问setUpGraph 方法,即使它是公共方法。
任何帮助将不胜感激!
【问题讨论】:
-
MainActivity.setUpGraph() - 这是一个静态方法吗?如果不是,您需要在 MainActivity 的实例上调用它,而不是类本身。
-
它不是静态的,并且采用特定于 MainActivity 类的参数。如何访问 MainActivity 的实例及其当前正在运行的成员?
标签: javascript android xamarin webchromeclient