2017-01-21 3 views
0

Ich spielte mit Xamarin android Webview, und ich stieß auf dieses Problem. Die Webansicht öffnet nicht die Seiten, die auf neue Registerkarte geöffnet wird. Zum Beispiel gibt es Stellenanzeigen auf stackoverflow, die in neuen Tabs geöffnet werden, und wenn Sie darauf tippen, passiert nichts! Danke im Vorraus und hier ist mein Code.Xamarin Webview nicht neue Tabs starten

[Activity(MainLauncher = false, Theme = "@android:style/Theme.NoTitleBar")] 
public class Obs_Activity : Activity 
{ 
    WebView web_view; 
    protected override void OnCreate(Bundle savedInstanceState) 
    { 
     base.OnCreate(savedInstanceState); 
     SetContentView(Resource.Layout.sist); 
     web_view = FindViewById<WebView>(Resource.Id.webview); 
     web_view.Settings.SetSupportMultipleWindows(false); 
     web_view.Settings.UseWebViewBackgroundForOverscrollBackground = true; 
     web_view.Settings.PluginsEnabled = true; 
     web_view.Settings.AllowFileAccess = true; 
     web_view.Settings.DisplayZoomControls = true; 
     web_view.SetWebViewClient(new HelloWebViewClient(this)); 


     web_view.Settings.JavaScriptEnabled = true; 
     web_view.Settings.JavaScriptCanOpenWindowsAutomatically = true; 
     web_view.Settings.SetSupportZoom(true); 
     web_view.LoadUrl("http://obs.kku.edu.tr/"); 
    } 




} 
public class HelloWebViewClient : WebViewClient 
{ 
    public Activity mActivity; 
    public HelloWebViewClient(Activity mActivity) 
    { 
     this.mActivity = mActivity; 
    } 
    public override bool ShouldOverrideUrlLoading(WebView view, string url) 
    { 
     view.LoadUrl(url); 
     Toast.MakeText(mActivity, "Yukleniyor...", 
          ToastLength.Long).Show(); 
     return true; 
    } 

    public override void OnReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, string host, string realm) 
    { 
     base.OnReceivedHttpAuthRequest(view, handler, host, realm); 
     Toast.MakeText(mActivity, "Hata", ToastLength.Long).Show(); 
    } 
} 

01-23 13: 02: 36,695 D/WebViewCallback (16789): shouldInterceptRequest = http://ogrenciportal.kku.edu.tr/getinfo.ashx?id=3&tt=690 01-23 13: 02: 36,711 D/WebViewCallback (16789): onLoadResource = http://ogrenciportal.kku.edu.tr/getinfo.ashx?id=3&tt=690 01-23 13: 02: 36,712 D/WebViewCallback (16789): doUpdateVisitedHistory = http://ogrenciportal.kku.edu.tr/Default.aspx# Reload = false 01-23 13: 02: 36,740 D/WebViewCallback (16789): onPageFinished, url = http://ogrenciportal.kku.edu.tr/Default.aspx#

Dies ist das Protokoll, wenn Ich drücke diesen Link und nichts passiert.

+0

Mögliches Duplikat [Wie in neuem Tab Android webview Links zu öffnen?] (Http://stackoverflow.com/questions/38034769/how-to-open-links-in-new-tab-android- webview) – SushiHangover

+0

Nein, es ist nicht einmal in der Nähe. –

Antwort

0

WebView unterstützt keine Registerkarten Wenn Sie eine Browser-Benutzeroberfläche mit Registerkarten benötigen, müssen Sie sie selbst implementieren.

Sie setzen SetSupportMultipleWindows zu true, aber nicht WebChromeClient Implementierung und es ist OnCreateWindow Methode.

Legt fest, ob das WebView mehrere Fenster unterstützt. Wenn diese Eigenschaft auf "true" gesetzt ist, muss onCreateWindow (WebView, boolean, boolean, Message) von der Host-Anwendung implementiert werden.

  • Wenn Sie die Apply Now/JavaScript-Popups wollen in einer neue Seite angezeigt werden, weiterhin WebViewClient mit gesetzt, aber SetSupportMultipleWindows zu false.

  • Wenn Sie einen neuen WebView in einem Tab öffnen möchten, müssen Sie eine WebChromeClient Unterklasse implementieren und die OnWindowCreate außer Kraft setzen und setzen Sie ihn über WebView.SetWebChromeClient sonst der Link wird in der Standard geöffnet werden | System Web-Browser.

+0

Ich möchte keinen Tabbed-Browser, ich möchte nur die neuen Tabs anzeigen, da sie keine neue Registerkarte im selben Webview sind. Ich setze SetSupportMultipleWindows auf "false", wenn Sie auf einen Link klicken, der auf "new" gesetzt ist. Es passiert nichts. –

+0

Okay, neue Tabs sind in Ordnung, genau wie ich auf der Webansicht wollte. Der Browser blockiert die neue Registerkarte. Das ist das Problem hier, denke ich. Editiert den Hauptpost. –

+0

Ich setze setJavaScriptCanOpenWindowsAutomatisch auf True. Jetzt öffnet sich eine neue leere Seite. Warum ist es leer, seltsam –

Verwandte Themen