我正在使用Xamarin编写一个Android应用程序,在这个应用程序中,我有一个需要在创建应用程序时加载的set视图,在它完全加载之后,我会调用一些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方法,即使它是一个公共方法。
任何帮助都将不胜感激!
发布于 2015-06-15 19:29:31
在MainActivity类中接受并存储myWebChromeClient类型的引用。只有这样,才能在MainActivity中调用MainActivity()函数。
编辑
myWebChromeClient类:
class myWebChromeClient : WebChromeClient
{
public MainActivity activity;
public override void OnProgressChanged(WebView view, int newProgress)
{
base.OnProgressChanged(view, newProgress);
if (newProgress == 100) { activity.setUpGraph(); }
}
}以及活动:
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
myWebChromeClient client = new myWebChromeClient();
client.activity = this;
graph.SetWebChromeClient(client);
graph.Settings.JavaScriptEnabled = true;
graph.LoadUrl("file:///android_asset/graph.html");为了简单起见,我向客户端添加了一个公共变量,请不要在生产中使用相同的变量。在构造函数中传递引用或使用get-set。
https://stackoverflow.com/questions/30850115
复制相似问题