Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.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
Java 当我按下android键盘上的按钮时,WebView正在关闭_Java_Android_Webview_Android Webview - Fatal编程技术网

Java 当我按下android键盘上的按钮时,WebView正在关闭

Java 当我按下android键盘上的按钮时,WebView正在关闭,java,android,webview,android-webview,Java,Android,Webview,Android Webview,我正在尝试为android编程,但我遇到了一个小问题。我制作了一个应用程序,但我无法在不完全关闭应用程序的情况下打开手机按钮的背面,返回到上一页。我正在使用WebView public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceSt

我正在尝试为android编程,但我遇到了一个小问题。我制作了一个应用程序,但我无法在不完全关闭应用程序的情况下打开手机按钮的背面,返回到上一页。我正在使用WebView

public class MainActivity extends AppCompatActivity {

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


        getSupportActionBar().hide();

        // CODIGO DO WEB VIEW

        final WebView myWebView = (WebView) findViewById(R.id.webView);
        myWebView.loadUrl("http://www.idestudos.com.br");
        WebSettings webSettings = myWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setSupportZoom(true);
        webSettings.setBuiltInZoomControls(true);

        myWebView.setWebViewClient(new MyBrowser());

        myWebView.setWebViewClient(new WebViewClient() { //CODE WEBVIEW}

通过调用canGoBack很容易实现

    if(webView.canGoBack()) {
        webView.goBack();
    }
并在活动中从内部onBackPressed方法调用它,如下所示:

@Override public void onBackPressed() {

    if(webView != null && webView.canGoBack()) {
        webView.goBack();
    } else {
        super.onBackPressed();
    }
}
这里有一个解决方案:

当WebView覆盖URL加载时,它会自动累积已访问网页的历史记录。您可以使用goBack()和goForward()在历史记录中前后导航

例如,以下是您的活动如何使用“设备后退”按钮向后导航:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// Check if the key event was the Back button and if there's history
if ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack()) {
    myWebView.goBack();
    return true;
}
// If it wasn't the Back key or there's no web page history, bubble up to the default
// system behavior (probably exit the activity)
return super.onKeyDown(keyCode, event);
}
查看Android开发者指南了解更多信息


希望它能帮助你

你的日志中有什么相关信息吗?我的钱会花在一个NullPointerException上,或者至少是某种类型的异常上。请检查此项以处理URL更改。您可能需要继续存储WebView加载的实际URL(每次URL更新时),然后覆盖onBackPressed()方法,以便应用程序在WebView中加载上一个URL,而不是完成整个活动。您还必须
返回
a
onKeyDown
。否则,如果用户点击backbutton并且没有历史记录,则不会发生任何事情。不,只要您不返回super.onBackPressed,他就应该没事。如果
webView.canGoBack()
为false,则需要
return onBackPressed
。我看到你编辑了你的回答,干杯!很高兴我能提供帮助。从OnCreate方法中插入?在创建webview的任何位置插入并初始化它。希望有帮助!