jay
jay

Reputation: 75

Android webview back button, can't get it to work

I have created my first Android app which is basically a webview to call some pages online but when I press the back button it just closes the app, how can I configure the back button to go back a page?

Here is my current code:

 package com.mysite.myapp;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient; 
import android.widget.Button;

public class mysite extends Activity
{   

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
        if(event.getAction() == KeyEvent.ACTION_DOWN){ 
            switch(keyCode) 
            { 
            case KeyEvent.KEYCODE_BACK: 
                if(mWebView.canGoBack() == true){ 
                    mWebView.goBack(); 
                }else{ 
                    finish(); 
                } 
                return true; 
            } 

        } 
        return super.onKeyDown(keyCode, event); 
    } 

    WebView webView; 

    final Activity activity = this;     
    @Override    
    public void onCreate(Bundle savedInstanceState)    
    {        
        super.onCreate(savedInstanceState);        
        this.getWindow().requestFeature(Window.FEATURE_PROGRESS);        
        setContentView(R.layout.main);
        final WebView webView = (WebView) findViewById(R.id.webview);        
        webView.getSettings().setJavaScriptEnabled(true);         
        webView.setWebChromeClient(new WebChromeClient() {            
            public void onProgressChanged(WebView view, int progress)            
            {               
                activity.setTitle("Loading...");                
                activity.setProgress(progress * 100);                 

                if(progress == 100)                    
                    activity.setTitle(R.string.app_name);            
                }        
            });    


        webView.setWebViewClient(new WebViewClient() {            
            @Override            
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)            
            {               
                // Handle the error            
                }             
            @Override            
            public boolean shouldOverrideUrlLoading(WebView view, String url)            
            {                
                view.loadUrl(url);                
                return true;            
                }        
            });         
        webView.loadUrl("http://www.mysite.com/page1.php"); 

        Button webButton = (Button) findViewById(R.id.button1); 
        webButton.setOnClickListener(new OnClickListener() { 
          @Override 
          public void onClick(View v) { 
                 webView.loadUrl("http://www.mysite.com/page2.php"); 
          }});

        Button webButton1 = (Button) findViewById(R.id.button2); 
        webButton1.setOnClickListener(new OnClickListener() { 
          @Override 
          public void onClick(View v) { 
                 webView.loadUrl("http://www.mysite.com/page3.php"); 
          }});

        Button webButton2 = (Button) findViewById(R.id.button3); 
        webButton2.setOnClickListener(new OnClickListener() { 
          @Override 
          public void onClick(View v) { 
                 webView.loadUrl("http://www.mysite.com/page4.php"); 
          }});

        Button webButton3 = (Button) findViewById(R.id.button4); 
        webButton3.setOnClickListener(new OnClickListener() { 
          @Override 
          public void onClick(View v) { 
                 webView.loadUrl("http://www.mysite.com/page4.php"); 
          }});

        Button webButton4 = (Button) findViewById(R.id.button5);
        webButton4.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                Intent myIntent = new Intent(view.getContext(), morescreen.class);
                startActivityForResult(myIntent, 0);
            }

        });

        Button webButton5 = (Button) findViewById(R.id.button6); 
        webButton5.setOnClickListener(new OnClickListener() { 
          @Override 
          public void onClick(View v) { 
                 webView.loadUrl("http://www.mysite.com/page5.php"); 
          }});



        }
}

I would really appreciate your help, im still learning :)

Thanks in advance

Jay

Upvotes: 2

Views: 4674

Answers (3)

aziz
aziz

Reputation: 67

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {
        webview.goBack();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

Upvotes: 4

Taner
Taner

Reputation: 4579

Use this:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (wview != null && keyCode == KeyEvent.KEYCODE_BACK && wview.canGoBack() ) {
        wview.goBack();
        return true;
    }
    else
    {
        return super.onKeyDown(keyCode, event);
    }

}

Upvotes: 0

Brian
Brian

Reputation: 8095

In your Activity, override the public and void onBackPressed() method and use the method webView.goBack() inside to go back one page. Refer here for more information, developer.android.com/resources/tutorials/views/hello-webview.html.

Upvotes: 1

Related Questions