Dan Hastings
Dan Hastings

Reputation: 3280

Android Webview make back button go to previous page

I have a web view that lets me browse through a site. When i click the back button, rather than it going to the previous page it exits the app. I have added the following method to MainActivity.java

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    setContentView(R.layout.activity_main);
    WebView webview = (WebView) this.findViewById(R.id.webView);
    if (event.getAction() == KeyEvent.ACTION_DOWN) {
        switch (keyCode) {
            case KeyEvent.KEYCODE_BACK:
                if (webview.canGoBack()) {
                    webview.goBack();
                } else {
                    finish();
                }
                return true;
        }
    }
    return super.onKeyDown(keyCode, event);
}

Upvotes: 4

Views: 21244

Answers (4)

Pradeep Kumar
Pradeep Kumar

Reputation: 2709

Backkey pressed event is not suitable here use this code:

@Override
public void onBackPressed() {
    super.onBackPressed();
    Intent intent=new Intent(LiveImage.this,DashBoard.class);
    startActivity(intent);
}

Upvotes: 0

Parsania Hardik
Parsania Hardik

Reputation: 4623

Full reference for next button and progress bar : put back and next button in webview

If you want to go to back page when click on phone's back button, use this:

@Override
public void onBackPressed() {
    if (webView.canGoBack()) {
        webView.goBack();
    } else {
        super.onBackPressed();
    }
} 

You can also create custom back button like this:

btnback.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            if (wv.canGoBack()) {
                wv.goBack();
            }
        }
    }); 

Upvotes: 0

Kingfisher Phuoc
Kingfisher Phuoc

Reputation: 8190

I think you should override your activity OnBackPressed :

@Override
public void onBackPressed() {
    if (webView.canGoBack()) {
        webView.goBack();
    } else {
        super.onBackPressed();
    }
}

Upvotes: 20

Wesley
Wesley

Reputation: 4124

Do not override onKeyDown event, override onBackPressed, so that every time the back button is pressed, you can override it and add your own logic into it. The Code is like this:

@Override
public void onBackPressed() {
    if (webView.canGoBack()) {
        webView.goBack();
    } else {
        super.onBackPressed();
    }
}

Upvotes: 3

Related Questions