Как реализовать навигацию в Xamarin для Webview для Android? - PullRequest
0 голосов
/ 07 мая 2018

Я изучаю C # для Android с xamarin Studio. Я следовал учебному руководству по документам Microsoft. Все работало нормально, пока я не добавил метод OnkeyDown () . Компилятор не может найти web_view , но он прямо там.

Как я могу это исправить?

using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Webkit;
using Android.Widget;
using Android.OS;
using theWedding.Views;
using theWedding.Models;

namespace theWedding
{
    [Activity(Label = "theWedding", MainLauncher = true)]
    public class MainActivity : Activity
    {
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            SetContentView(Resource.Layout.Main);

            var web_view = FindViewById<WebView>(Resource.Id.webview);
            web_view.Settings.JavaScriptEnabled = true;
            web_view.SetWebViewClient(new TheWeddingClient());
            web_view.LoadUrl("https://patahapa.com/apps");

        }
        public class TheWeddingClient : WebViewClient
        {
            //for android <7
            //public override bool ShouldOverrideUrlLoading(WebView view, string url)
            //{
            //    view.LoadUrl(url);
            //    return false;
            //}
            //for android 7+
            public override bool ShouldOverrideUrlLoading(WebView view, IWebResourceRequest request)
            {
                view.LoadUrl(request.Url.ToString());
                return false;
            }
        }
        public override bool OnKeyDown(Android.Views.Keycode keyCode, Android.Views.KeyEvent e)
        {
            if (keyCode == Keycode.Back && web_view.CanGoBack())
            {
                web_view.GoBack();
                return true;
            }
            return base.OnKeyDown(keyCode, e);
        }
    }
}

1 Ответ

0 голосов
/ 07 мая 2018

Поскольку вы объявляете веб-просмотр внутри OnCreate, его область действия ограничена только OnCreate. Это базовый обзор C #.

Если вместо этого вы объявите веб-просмотр на уровне класса, он будет доступен везде в классе.

  // declare at the class level
  WebView webview;

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

        SetContentView(Resource.Layout.Main);

        web_view = FindViewById<WebView>(Resource.Id.webview);
        web_view.Settings.JavaScriptEnabled = true;
        web_view.SetWebViewClient(new TheWeddingClient());
        web_view.LoadUrl("https://patahapa.com/apps");

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...