Почему происходит сбой моего приложения при вызове OnBackPressed? - PullRequest
0 голосов
/ 13 сентября 2018

Я пытаюсь выполнить некоторый JavaScript (веб-просмотр Eval), когда нажата кнопка «Назад» (OnBackPressed), но приложение вылетает.Может кто-нибудь выяснить, что происходит?

MainActivity.cs

public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
    protected override void OnCreate(Bundle savedInstanceState)
    {
        /*
     some code
    */
        base.OnCreate(savedInstanceState);
        global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
        LoadApplication(new App());
    }

    public override void OnBackPressed()
    {
        MainPage.ExecJS();
}
}

MainPage.xaml.cs

 public partial class MainPage : ContentPage
 {
    public static double ScreenWidth { get; set; }
    public static double ScreenHeight { get; set; }
    public static WebView webnav;
    StackLayout parent = null;
    public MainPage()
    {
        InitializeComponent();
        WebView webnav = new WebView
        {
            HeightRequest = 1000,
            WidthRequest = 1000,
            Source = "https://www.comprarmusicas.com.br/mobile/index.php"
        };
        parent = new StackLayout();
        parent.Children.Add(webnav);
        Content = parent;
    }

     public static void ExecJS()
    {
        string jsCode = "alert('ok');";
        webnav.Eval(jsCode);
    }
 }

1 Ответ

0 голосов
/ 13 сентября 2018

Вы не присваиваете статическую переменную WebView в своем .ctor, но создаете новую локальную переменную экземпляра.

Удалите тип WebView, из которого вы создаете экземпляр / назначаете WebView, т. Е.

public MainPage()
{
    InitializeComponent();
    webnav = new WebView // this assigns to the "public static WebView webnav;"
    {
        HeightRequest = 1000,
    ~~~
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...