如何在public void onBackPressed()上实现两个动作

时间:2016-03-20 15:09:15

标签: java android android-layout webview

我正在开发一个使用webview打开远程URL的简单Android应用程序,我使用android studio nav。抽屉模板女巫已经在MainActivity.java这段代码中

@Override
public void onBackPressed() {
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    if (drawer.isDrawerOpen(GravityCompat.START)) {
        drawer.closeDrawer(GravityCompat.START);
    } else {
        super.onBackPressed();
    }
} 

现在我想使用这段代码在用户浏览远程网站的某些页面时启用返回按钮

if(mWebView.canGoBack()) {
    mWebView.goBack();

在我测试时,public void onBackPressed()

中的MainActivity.java不能两次

有关如何实现这一目标的任何想法?

2 个答案:

答案 0 :(得分:2)

在现有的if-else中添加if-else分支。 E.g

@Override
public void onBackPressed() {
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    if (drawer.isDrawerOpen(GravityCompat.START)) {
        drawer.closeDrawer(GravityCompat.START);
    } else if (mWebView.canGoBack()) {
       mWebView.goBack();
    } else {
        super.onBackPressed();
    }
} 
这样,如果抽屉打开,如果按下后退按钮,它将被关闭。如果它已关闭,您将调用mWebView.goBack();'直到canGoBack()返回true

答案 1 :(得分:1)

@Override
    public void onBackPressed() {
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
        } else {
            if(mWebView.canGoBack()) {
                mWebView.goBack();
                return;
            }
            super.onBackPressed();
        }
    }