2016-04-21 4 views
0

Ich habe eine Xamarin.Forms App mit einem HybridWebView und einem HybridWebViewRenderer im Droid-Projekt.Wie man HybridWebView zum Zurückgehen bringt, wenn die Geräte-Zurück-Taste gedrückt wird

Ich versuche, die Webansicht zurück zu navigieren, wenn die Zurück-Taste des Geräts gedrückt wird.

Es sieht ziemlich einfach aus, wenn ich nur ein Xamarin.Forms WebView innerhalb meiner Seite benutzte. Ich würde es einfach so machen ...

protected override bool OnBackButtonPressed() 
{ 
    _webView.GoBack(); 
    return true; 
} 

Aber das HybridWebView hat keine GoBack() - Methode.

In meinem Droid-Projekt ist der einzige Ort, wo ich Zugriff auf die WebView habe, im HybridWebViewRenderer, aber ich kann hier nicht auf das OnBackButtonPressed-Ereignis hören.

Wer weiß, wie ich ein HybridWebView zurückfahren kann, wenn die Zurück-Taste des Geräts gedrückt wird?

Antwort

2

Rufen Sie window.history.back(); aus Javascript möglicherweise eine schmutzige Lösung.

Auch der Aufruf der Renderer-Methode aus einer PCL-Klasse sollte kein Problem sein.

Die PCL-Klasse:

public class MyHybridWebView : HybridWebView 
{ 
    public event EventHandler<EventArgs> DoSomeNative; 

    public void CallNative() 
    { 
     DoSomeNative(this, EventArgs.Empty); 
    } 
} 

Der Renderer:

public class MyHybridWebViewRenderer : HybridWebViewRenderer 
{ 
    protected override void OnElementChanged(ElementChangedEventArgs<View> e) 
    { 
     base.OnElementChanged(e); 

     if (e.OldElement != null || Element == null) 
     { 
      return; 
     } 

     (e.NewElement as MyHybridWebView).DoSomeNative += (sender, args) => 
     { 
      //Do something 
     }; 
    } 
} 
+0

Dank konnte ich den Code, den Sie in themain Aktivität OnBackPressed zu erfassen nutzen und es in dem in dem DoSomeNative Ereignisse rended Griff Handler. –

Verwandte Themen