首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android:对Toast使用onBackPressed()的正确方法

Android:对Toast使用onBackPressed()的正确方法
EN

Stack Overflow用户
提问于 2011-06-20 23:31:01
回答 10查看 266K关注 0票数 87

我写了一段代码,将给用户一个提示,要求他们再次按回,如果他们想要退出。我目前的代码在一定程度上可以正常工作,但我知道它写得很差,我想有一种更好的方法来做到这一点。任何建议都会很有帮助!

代码:

代码语言:javascript
复制
public void onBackPressed(){
    backpress = (backpress + 1);
    Toast.makeText(getApplicationContext(), " Press Back again to Exit ", Toast.LENGTH_SHORT).show();

    if (backpress>1) {
        this.finish();
    }
}
EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2011-06-20 23:33:48

我会实现一个对话框,询问用户是否要退出,如果想退出,则调用super.onBackPressed()

代码语言:javascript
复制
@Override
public void onBackPressed() {
    new AlertDialog.Builder(this)
        .setTitle("Really Exit?")
        .setMessage("Are you sure you want to exit?")
        .setNegativeButton(android.R.string.no, null)
        .setPositiveButton(android.R.string.yes, new OnClickListener() {

            public void onClick(DialogInterface arg0, int arg1) {
                WelcomeActivity.super.onBackPressed();
            }
        }).create().show();
}

在上面的示例中,您需要将WelcomeActivity替换为活动的名称。

票数 217
EN

Stack Overflow用户

发布于 2013-03-31 19:37:40

你不需要一个反压力机的柜台。

只需存储对所显示的toast的引用:

private Toast backtoast;

然后,

代码语言:javascript
复制
public void onBackPressed() {
    if(USER_IS_GOING_TO_EXIT) {
        if(backtoast!=null&&backtoast.getView().getWindowToken()!=null) {
            finish();
        } else {
            backtoast = Toast.makeText(this, "Press back to exit", Toast.LENGTH_SHORT);
            backtoast.show();
        }
    } else {
        //other stuff...
        super.onBackPressed();
    }
}

如果在吐司仍然可见时按back,并且仅当按back会导致退出应用程序时,这将调用finish()

票数 19
EN

Stack Overflow用户

发布于 2014-02-18 07:48:05

我使用这个简单得多的方法...

代码语言:javascript
复制
public class XYZ extends Activity {
    private long backPressedTime = 0;    // used by onBackPressed()


    @Override
    public void onBackPressed() {        // to prevent irritating accidental logouts
        long t = System.currentTimeMillis();
        if (t - backPressedTime > 2000) {    // 2 secs
            backPressedTime = t;
            Toast.makeText(this, "Press back again to logout",
                                Toast.LENGTH_SHORT).show();
        } else {    // this guy is serious
            // clean up
            super.onBackPressed();       // bye
        }
    }
}
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6413700

复制
相关文章

相似问题

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