2

現在、Web ページ クラスにネストされた webviewclient クラスを取得しています。

ShouldOverrideUrlLoadingをオーバーライドし、新しい URL を Web ビューにロードします。しかし、特定の URL では、Web ビューを閉じたいだけです。

ShouldOverrideUrlLoadingに追加しようとしましたが、そこでアクティビティを開始/終了できません。また、Web ページ クラス内に関数を作成しようとしましたが、ネストされたクラスから呼び出すことができませんでした。

今、私は押し戻すときにWebビューを閉じるだけですが、ユーザーがそれほど多くの作業をしなければならないようにしたくありません..

私は Xamarin(C#) を使用して Android 向けに開発していますが、Java の回答も役立つ可能性が高いです。

[Activity (Label = "WebPage", Theme = "@android:style/Theme.NoTitleBar")]
public class WebPage : Activity
{
    WebView web_view;

    private class HelloWebViewClient : WebViewClient
    {
        public override bool ShouldOverrideUrlLoading (WebView view, string url)
        {
            view.LoadUrl (url);
            return true;
        }
    }

    public void dofinish()
    {
        var activity2 = new Intent (this, typeof(MainActivity));
        activity2.PutExtra("targeturl", targeturl);
        StartActivity(activity2);

        Finish();
    }

    public string targeturl;
    protected override void OnCreate (Bundle bundle)
    {
        base.OnCreate (bundle);
        string text = Intent.GetStringExtra ("MyData") ?? "Data not available";
        targeturl = Intent.GetStringExtra ("targeturl") ?? "No Target Url";

        SetContentView (Resource.Layout.WebView);
        web_view = FindViewById<WebView> (Resource.Id.LocalWebview);

        web_view.Settings.JavaScriptEnabled = true;
        web_view.LoadUrl (text);
        web_view.SetWebViewClient (new HelloWebViewClient ());
    }

    public override void OnBackPressed()
    {
        var activity2 = new Intent (this, typeof(MainActivity));
        activity2.PutExtra("targeturl", targeturl);
        StartActivity(activity2);

        Finish();
    }
}
4

1 に答える 1