Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 应用程序退出,而不是导航到WebView中的上一页_Android - Fatal编程技术网

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

Android 应用程序退出,而不是导航到WebView中的上一页,android,Android,你能告诉我为什么当我点击设备的“后退”按钮时应用程序会退出吗?我正在使用webview。我在点击该页面上的任何一个链接时会转到一个链接“one.link”,然后转到下一页。但当我按下“后退”按钮时,我的应用程序将退出。而不是转到上一页。这意味着它不支持历史记录 我们能做到吗 我使用了这个代码Layout.xml <WebView android:id="@+id/webview" android:layout_width="fill_parent" android:la

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

我们能做到吗

我使用了这个代码
Layout.xml

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

您需要重写
onBackPressed()
方法并自己实现历史导航

大概是这样的:

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

这适用于Android 2.2+,对于较旧的Android版本,覆盖
onKeyDown()

您需要覆盖
onBackPressed()
方法并自己实现历史导航

大概是这样的:

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

这适用于Android 2.2+,覆盖
onKeyDown()
适用于较旧的Android版本。

默认情况下,活动假定已完成,因此这是默认行为,为了在back key press事件中执行自定义任务,您需要覆盖
活动的此方法

@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设置为您的类字段,如下所示:

@Override
public void onBackPressed() {
    if(browser.canGoBack()) {
        browser.goBack();
    } else {
        super.onBackPressed();
    }
}
WebView browser;
并在
onCreate()中初始化它


默认情况下,“活动”假定已完成,因此这是默认行为,为了在返回按键事件时执行自定义任务,您需要覆盖
活动的此方法

@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设置为您的类字段,如下所示:

@Override
public void onBackPressed() {
    if(browser.canGoBack()) {
        browser.goBack();
    } else {
        super.onBackPressed();
    }
}
WebView browser;
并在
onCreate()中初始化它


默认情况下,“后退”按钮就是这样工作的。它完成当前的活动。要返回tge History,您应该覆盖
onBackPressed

 @Override
 public void onBackPressed() 
 {

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

 }

默认情况下,“后退”按钮就是这样工作的。它完成当前的活动。要返回tge History,您应该覆盖
onBackPressed

 @Override
 public void onBackPressed() 
 {

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

 }

将此代码段复制到活动中

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

将此代码段复制到活动中

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

我认为,因为您在每个活动中都调用了finish(),所以请将其删除并重试。您应该查看此答案:&我认为,因为您在每个活动中都调用了finish(),所以请将其删除并重试。您应该查看此答案:&我如何实现此目标我如何实现此目标