访问上次加载的网址

时间:2017-10-20 08:24:34

标签: webview xamarin.android android-webview

我正在用 Xamarin android 制作一个用户导航的应用程序。该应用包含webview。当用户打开webview时,会加载url并可以进行浏览。当他结束应用并再次打开时,会再次加载网址,而不是查看上次访问过的网址。

我不知道我在这里做错了什么。

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        // Set our view from the "main" layout resource
        SetContentView(Resource.Layout.Main);
        webView = FindViewById<WebView>(Resource.Id.webView1);
        webView.SetWebViewClient(new MyWebClient());
        CookieManager.Instance.SetAcceptCookie(true);
        webView.Settings.JavaScriptEnabled = true;
        webView.Settings.SetAppCacheEnabled(true);
        webView.LoadUrl(getUrl());
        webView.SetPadding(0, 0, 0, 0);


        webView.Settings.SetSupportZoom(true);

    }
    public void saveUrl(String url)
    {
        ISharedPreferences sp = GetSharedPreferences("SP_WEBVIEW_PREFS", FileCreationMode.Private);
        ISharedPreferencesEditor editor = sp.Edit();
        editor.PutString("SAVED_URL", url);
        editor.Commit();
    }
    public String getUrl()
    {

        ISharedPreferences sp = GetSharedPreferences("SP_WEBVIEW_PREFS", FileCreationMode.Private);
        //If you haven't saved the url before, the default value will be google's page
        return sp.GetString("SAVED_URL", "http://google.com");

    }
    public void onPageFinished(WebView view, String url)
    {
        this.onPageFinished(view, url);
        saveUrl(url);

    }
}

internal class MyWebClient : WebViewClient
{
    public override bool ShouldOverrideUrlLoading(WebView view, string url)
    {
        view.LoadUrl(url);
        return false;
    }
}

1 个答案:

答案 0 :(得分:0)

您已在活动中放置onPageFinished方法。它应该在MyWebClient类中重写,如下所示:

internal class MyWebClient : WebViewClient 
{ 
     public override bool ShouldOverrideUrlLoading(WebView view, string url) 
     { 
           view.LoadUrl(url); 
           return false; 
     } 


     public override void OnPageFinished(WebView view, String url) 
     { 
           base.OnPageFinished(view, url); 

           //Save the url here. 
           //This method itself gives you the last url loaded as it's url Parameter.
           ISharedPreferences sp = Application.Context.GetSharedPreferences("SP_WEBVIEW_PREFS", FileCreationMode.Private);
           ISharedPreferencesEditor editor = sp.Edit();
           editor.PutString("SAVED_URL", url);
           editor.Commit().
     }
}

当URL加载完成后,将自动调用此方法,然后您将加载的URL存储在此方法中。