2017-01-17 1 views
0

Ich versuche WebView Aufruf in meiner Anwendung zu ermöglichen. In diesem Anruf sollten sie in der Lage sein, zu einer anderen Seite zu navigieren. Ich versuche auch, eine konsistente AppBar für die Anwendung zu halten.Android - Klicken auf ein WebView macht AppBar verschwinden.

Ich habe die .xml definiert als:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
tools:context="com.realpayment.app.activities.CalledAction" 
android:background="@color/c_black"> 

<android.support.v7.widget.Toolbar 
    android:id="@+id/my_toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="?attr/actionBarSize" 
    android:elevation="4dp" 
    android:theme="@style/JupiterTheme" 
    app:popupTheme="@style/ThemeOverlay.AppCompat"/> 
<WebView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/calledAction" 
    android:background="@color/c_black" 
    android:layout_margin="15px" 
    android:layout_below="@+id/my_toolbar" 
    android:textColor="@color/c_white" 
    /> 

In meinem Code Ich rufe (I mit den Optionen spiele und fand diese in einem anderen Beitrag SO), aber ich gerade erst die erste und letzte Zeile und das gleiche Problem sehen (ich in diesem Fall wissen Sie nicht klicken können, aber ich hatte versehentlich eine Umleitung in meinem Link):

WebView browser = (WebView) findViewById(R.id.calledAction); 
    browser.setFocusable(true); 
    browser.setFocusableInTouchMode(true); 
    browser.getSettings().setJavaScriptEnabled(true); 
    browser.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); 
    browser.getSettings().setDomStorageEnabled(true); 
    browser.getSettings().setDatabaseEnabled(true); 
    browser.getSettings().setAppCacheEnabled(true); 
    browser.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); 
    browser.loadUrl(sCallToActionLink); 

Dies lädt den Link perfekt und mein Handeln ba r wird angezeigt. Der Auf-Button bringt mich zur übergeordneten Aktivität und der Zurück-Button bringt mich zur letzten aufgerufenen Aktivität. Mein Problem ist, dass wenn ich auf einen Link klicke, öffnet sich ein neuer Bildschirm mit einer eigenen AppBar, die keine Schaltfläche zum Hochladen hat. Dies scheint eine völlig andere Sichtweise zu sein. Der Zurück-Knopf funktioniert immer noch, aber mein Plan ist es, einen Auf-Knopf zu geben, so dass der Benutzer durch die paar Bildschirme navigieren kann, die er möchte, und dann den Auf-Knopf drücken kann, um zu einem vernünftigen Platz in meiner App zurückzukehren. In diesem Fall scheint die einzige Möglichkeit zu sein, wiederholt den Zurück-Knopf zu drücken.

Vielen Dank im Voraus

+0

So möchten Sie den Link in Ihren eigenen 'WebView' geöffnet werden? – Pztar

+0

Ja, das tue ich. Gibt es einen Grund, nicht? Ich habe gerade herausgefunden, dass das WebView eine Browserabsicht auslöst und nicht mehr in meiner Anwendung ist. –

Antwort

1

Sie den Link in Ihren WebView öffnen können, wenn Sie einen WebViewClient

Für API gesetzt 24+ diese Methode außer Kraft setzen.

browser.setWebViewClient(new WebViewClient() { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { 
      view.loadUrl(request.getUrl().toString()); 
      return false; 
     } 
    }); 

Wenn Sie unterstützen API < 24 verwenden Sie dann die alte Methode

browser.setWebViewClient(new WebViewClient() { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.loadUrl(url); 
      return false; 
     } 
    }); 
+0

Danke! Dieser Aufruf ist jedoch veraltet. Ich sollte in der Lage sein, shouldOverrideUrlLoading (WebView-Ansicht, WebResourceRequest Anfrage) obwohl verwenden. Es scheint eine gewisse Kniffligkeit zu haben, aber es sollte funktionieren. –

+0

@DanielleCox, tatsächlich hängt es davon ab, auf welche API Sie zielen. Ich füge beide Methoden hinzu. – Pztar

Verwandte Themen