请问Toast.makeText的问题

chenyq2008 2014-12-29 12:36:37
最近开发了一个app,使用webview加载网站的,有实现点击两次返回就退出程序的功能,使用了Toast.makeText提示 "再按一次退出程序",但在测试时发现某些手机在点击时会自动连续弹出显示两次提示,一次是当前网址,再一次是"再按一次退出程序",请问如何取消显示网址,只显示"再按一次退出程序"?退出的代码如下:
public void exit(){
if (!isExit) {
isExit = true;
Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();
mHandler.sendEmptyMessageDelayed(0, 2000);
} else {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
System.exit(0);
}
}
...全文
255 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
dai_jiawei 2014-12-31
  • 打赏
  • 举报
回复
引用 1 楼 WantD 的回复:
重写 onKeyDown 方法然后调用下面:

    private long exitTime;
    protected void exitApplication(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
            if ((System.currentTimeMillis() - exitTime) > 2000) {
                Toast.makeText(getApplicationContext(), getResources().getText(R.string.exit_msg),
                        Toast.LENGTH_SHORT).show();
                exitTime = System.currentTimeMillis();
            } else {
                finish();
                System.exit(0);
            }
        }
    }
+1
五柳--先生 2014-12-30
  • 打赏
  • 举报
回复
肯定是你这行代码导致的问题 mHandler.sendEmptyMessageDelayed(0, 2000); 点击了一下返回键,你给UI线程发个 0 的消息干什么呢?我觉得完全没这个必要的,如果业务需求的话,你自己把这个逻辑顺一下
「已注销」 2014-12-29
  • 打赏
  • 举报
回复
重写 onKeyDown 方法然后调用下面:

    private long exitTime;
    protected void exitApplication(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
            if ((System.currentTimeMillis() - exitTime) > 2000) {
                Toast.makeText(getApplicationContext(), getResources().getText(R.string.exit_msg),
                        Toast.LENGTH_SHORT).show();
                exitTime = System.currentTimeMillis();
            } else {
                finish();
                System.exit(0);
            }
        }
    }
GeneralAndroid 2014-12-29
  • 打赏
  • 举报
回复
楼主应该检查你的exit都是在哪里调用,然后查看附近的代码,找到相关的Toast。如果是先显示的“再按一次退出”,你检查一下你的Handler
Boris_liulang 2014-12-29
  • 打赏
  • 举报
回复
引用 1 楼 WantD 的回复:
重写 onKeyDown 方法然后调用下面:

    private long exitTime;
    protected void exitApplication(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
            if ((System.currentTimeMillis() - exitTime) > 2000) {
                Toast.makeText(getApplicationContext(), getResources().getText(R.string.exit_msg),
                        Toast.LENGTH_SHORT).show();
                exitTime = System.currentTimeMillis();
            } else {
                finish();
                System.exit(0);
            }
        }
    }
楼上的意思是把要写的放到res文件夹下,这样正规一些,不过,还是解决不了楼主的问题,感觉上来说,显示当前网址的那个,明显不是在这里显示的toast. 建议楼主检查一下代码,自己好好看看还有哪些地方可能会显示的是网址的Toast

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧