首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用"onBackPressed“

使用"onBackPressed“
EN

Stack Overflow用户
提问于 2018-04-13 00:19:21
回答 3查看 898关注 0票数 1

我有这样的代码:

代码语言:javascript
复制
public void onBackPressed(){
    final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
    builder.setMessage("Are you sure you want to exit ?");
    builder.setCancelable(true);
    builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            dialogInterface.cancel();
        }
            });
    builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
                    finish();
        }
            });
    AlertDialog alertDialog = builder.create();
    alertDialog.show();
}

如果按钮被按下一次,我如何在webview中返回,如果按下两次,如何显示对话框?

EN

回答 3

Stack Overflow用户

发布于 2018-04-13 00:24:49

尝试如下所示:

代码语言:javascript
复制
boolean backPressed = false;

@Override
public void onBackPressed() {
    if (backPressed) {
        super.onBackPressed();
        //Show your Dialog here
    }

    this.backPressed = true;

    new Handler().postDelayed(new Runnable() {

        @Override
        public void run() {
            backPressed = false;                       
        }
    }, /* Delay between successive presses here*/);
} 
票数 0
EN

Stack Overflow用户

发布于 2018-04-13 00:25:39

只需使用一个布尔值就可以知道对话框当前是否显示。这是最简单、最干净的方法。

票数 0
EN

Stack Overflow用户

发布于 2018-04-13 00:34:33

既然你提到了一个WebView,你可以考虑这样做:

代码语言:javascript
复制
@Override
public void onBackPressed() {
    if (webView.canGoBack()) {
        webView.goBack();
    } else {
        // show dialog as before
    }
} 

通过这种方式,您可以随时返回when视图,然后在到达第一个页面时显示对话框。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49801482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档