2013-06-05 10 views
6

Ich arbeite an einer Webview Android App. Ich kann ein Problem in meiner App nicht beheben, um zurück zu navigieren. Ich benutze diesen Code und habe versucht, alle Modifikationen daran vorzunehmen.Zurück Navigation in einem Webview Android App

public class DeviceActivity extends Activity 
{ 
private WebView web; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main_layout); 

    web = (WebView) findViewById(R.id.webView); 
    web.getSettings().setJavaScriptEnabled(true); 
    web.getSettings().setJavaScriptCanOpenWindowsAutomatically(false); 
    web.getSettings().setPluginsEnabled(false); 
    web.getSettings().setSupportMultipleWindows(false); 
    web.getSettings().setSupportZoom(false); 
    web.setVerticalScrollBarEnabled(false); 
    web.setHorizontalScrollBarEnabled(false); 

    //Our application's main page will be loaded 
    web.loadUrl("file:///android_asset/fbp/index.html"); 

    web.setWebViewClient(new WebViewClient() { 
      @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       return false; 
      } 
      public void onBackPressed(){ 

    if (web.canGoBack()) { 
      web.goBack();  
    } 
    else { 
     //My exit alert code goes here.  

    } 
} 
     }); 

} 

} 

Dies führt nicht zurück, sondern verlässt die App. Jede Hilfe wäre willkommen.

Antwort

15

Fügen Sie diese in Ihrem Activity Code (nicht in onCreate() oder sonstwo verschachtelt)

@Override 
public void onBackPressed() { 
    if (web.copyBackForwardList().getCurrentIndex() > 0) { 
     web.goBack(); 
    } 
    else { 
     // Your exit alert code, or alternatively line below to finish 
     super.onBackPressed(); // finishes activity 
    } 
} 

Dieses zurück durch die WebView Geschichte Stapel navigieren, bis er leer ist, und dann die Standardaktion auszuführen (in diesem Fall ist es beendet die Aktivität).

Sie sollten Ihren WebViewClient wahrscheinlich auch so einstellen, dass shouldOverrideUrlLoading return true zurückgegeben wird oder Sie keine Links laden.

+0

Danke für Hilfe! :) – ashu

+0

Ich bekomme Probleme beim Einfügen von Exit-Dialog-Code, kann mir helfen, einen Exit-Dialog hier zu machen? – ashu

+0

Sicher - öffne eine neue Frage mit deinem speziellen Problem, was du versucht hast, wo es falsch läuft, und ich werde helfen, wenn ich kann. :) –

Verwandte Themen