【问题标题】:click back twice to close app with toast in drawer layout单击两次以在抽屉布局中关闭带有 toast 的应用程序
【发布时间】:2020-01-21 09:28:44
【问题描述】:

在我的主要活动中有抽屉布局,通过查看this,我尝试添加建议用户单击后退按钮两次以关闭应用程序的功能

但在我的情况下,当关闭 DrawerLayout 时,它会显示 toast 消息,但我不希望这样,而是我想在活动空闲时显示它。

 boolean doubleBackToExitPressedOnce = false;

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

        this.doubleBackToExitPressedOnce = true;
        Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show();

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

            @Override
            public void run() {
                doubleBackToExitPressedOnce=false;
            }
        }, 2000);
    }

【问题讨论】:

    标签: java android drawerlayout onbackpressed


    【解决方案1】:

    如果你的抽屉打开然后关闭它和return以避免toast

    if (drawer.isDrawerOpen(GravityCompat.START)) {
        drawer.closeDrawer(GravityCompat.START);
    
        return;
    } 
    

    【讨论】:

    • 很好,你能推荐我吗?在这种情况下使用吐司或小吃店好吗?
    • 两者都是通知用户的正确方式。但是snackbar 是一种向用户展示内容的现代方式。在这样一个简单的事情中,我认为 toast 足以告知用户操作
    • 您能建议我如何使用它吗?我知道这是正常情况,但在这种情况下对我来说似乎很复杂,请您帮忙吗?
    • 在你的情况下,由于用户不需要采取任何行动,我认为简单的 toast 足以满足要求。但如果你愿意,可以这样使用:Snackbar.make(findViewById(android.R.id.content), "Please click BACK again to exit", Snackbar.LENGTH_SHORT).show()
    【解决方案2】:

    如果你的抽屉是打开的,先关闭再执行逻辑

    @Override
    public void onBackPressed() {
        DrawerLayout drawer = findViewById(R.id.drawer_layout);
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
        } else {
            if (doubleBackToExitPressedOnce) {
                super.onBackPressed();
                return;
            }
            doubleBackToExitPressedOnce = true;
            Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show();
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    doubleBackToExitPressedOnce = false;
                }
            }, 2000);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-09-08
      • 1970-01-01
      • 1970-01-01
      • 2013-06-24
      • 2018-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多