为什么调用 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);

    }

 }


慕容森
浏览 196回答 1
1回答

POPMUISE

您不是WebView在 .ctor 中分配静态变量,而是创建一个新的局部实例变量。WebView从您实例化/分配 WebView 的位置删除类型,即。public MainPage(){    InitializeComponent();    webnav = new WebView // this assigns to the "public static WebView webnav;"    {        HeightRequest = 1000,    ~~~
打开App,查看更多内容
随时随地看视频慕课网APP