应用程序退出而不是导航到WebView中的上一页

时间:2014-02-27 07:29:58

标签: android

你能不能告诉我为什么当我点击设备的后退按钮时应用程序退出。我正在使用webview。我在点击该页面上的任何一个链接“one.link”它将转到“next.link”然后它转到下一页。但当我按下后退按钮我的应用程序退出。没有转到上一页。这意味着它不支持历史记录。

我们可以这样做吗?

我使用了此代码Layout.xml

<WebView 
   android:id="@+id/webview"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
/>

ApplicationLoad.java是:

 public class ApplicationLoad extends Activity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.app);

            WebView browser = (WebView) findViewById(R.id.webview);
            browser.loadUrl("http://www.tutorialspoint.com");
        }           

    }

5 个答案:

答案 0 :(得分:4)

默认情况下,Activity假设已完成,因此它是默认行为,为了对后退键事件执行自定义任务,您需要覆盖Activity的此方法。

@Override
public void onBackPressed() {
    if(browser.canGoBack()){
         //if we can go back, just go back
         browser.goBack();
     }else{
         //let the parent handle it.
         super.onBackPressed();
     }
}

确保将WebView设为您的类字段:

WebView browser;

并在onCreate();

中初始化它
this. browser = (WebView) findViewById(R.id.webview);
browser.loadUrl("http://www.tutorialspoint.com");

答案 1 :(得分:1)

@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);
    }

答案 2 :(得分:0)

您需要覆盖onBackPressed()方法并自行实施历史记录导航。

这样的事情:

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

适用于Android 2.2及更高版本,适用于较旧的Android版本{。}}。

答案 3 :(得分:0)

这是默认情况下后退按钮的工作原理。它完成了当前的活动。要回到您应该覆盖onBackPressed

的历史记录
 @Override
 public void onBackPressed() 
 {

    if (webView.canGoBack()) 
    {
        webView.goBack();
    }
    else
    {
            super.onBackPressed();
    }

 }

答案 4 :(得分:0)

将此代码段复制到您的活动中。

private WebView mWebView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    mWebView=(WebView)findViewById(R.id.webview);

    // Do other things
}
@Override
public void onBackPressed() {
    //Check if the webview can go back
    if (mWebView.canGoBack()) {
        mWebView.goBack();
    }else{
    //This will finish the activity
    super.onBackPressed();
    }
}