【问题标题】:How to implement two actions on public void onBackPressed()如何在 public void onBackPressed() 上执行两个操作
【发布时间】:2016-03-20 15:09:14
【问题描述】:

我正在开发一个简单的 android 应用程序,它使用 webview 打开远程 URL,我使用 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 的两倍

关于如何实现这一点有什么想法吗?

【问题讨论】:

    标签: java android android-layout webview


    【解决方案1】:

    在现有的 if-else 中添加一个 if-else 分支。例如

    @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(); 'tillcanGoBack() 返回 true

    【讨论】:

    • 是的,它成功了,感谢您对 Blackbelt 的帮助!非常感谢!
    【解决方案2】:
    @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();
            }
        } 
    

    【讨论】:

    • 感谢乌卡什的帮助
    猜你喜欢
    • 2018-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    • 1970-01-01
    • 2012-05-26
    相关资源
    最近更新 更多