首页 > 解决方案 > 为什么调用 OnBackPressed 时我的应用程序崩溃?

问题描述

当按下后退按钮(OnBackPressed)但应用程序崩溃时,我正在尝试执行一些 javascript(webview Eval)。有人能弄清楚发生了什么吗?

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);
    }
 }

标签: c#xamarinxamarin.forms

解决方案


您不是WebView在 .ctor 中分​​配静态变量,而是创建一个新的局部实例变量。

WebView从您实例化/分配 WebView 的位置删除类型,即。

public MainPage()
{
    InitializeComponent();
    webnav = new WebView // this assigns to the "public static WebView webnav;"
    {
        HeightRequest = 1000,
    ~~~

推荐阅读