如何实现“再按一次返回键退出”功能?

3

一些应用程序(例如Dolphin HD浏览器)实现了以下功能:

按“后退”键可以回到上一个页面。当显示初始视图/活动/片段并按下“返回”时,会出现一个 Toast 提示,显示“再次按返回键退出”或类似的消息。

我该如何实现这个功能?


看看开发网站,它很清晰地定义了。 - JoxTraex
@JoxTraex:谢谢,我知道开发者网站,也知道如何影响后退堆栈。只是我以为这是一些内置功能。 - Thorsten Dittmar
@ThorstenDittmar 你的问题并不是关于内置功能的。你问的是“如何实现...”。 - user942821
@haibison:我知道。你的观点是什么? - Thorsten Dittmar
@ThorstenDittmar 我觉得如果您编辑一下问题,它会更清晰明了。如果不需要,请忽略我的评论。 - user942821
3个回答

8

在顶级班级中:

  int count = 0; 

在你的类主体中:
public void onBackPressed() 
{
   if(count == 1)
   {
      count=0;
      finish();
   }
   else
   {
      Toast.makeText(getApplicationContext(), "Press Back again to quit.", Toast.LENGTH_SHORT).show();
      count++;
   }

    return;
}

我认为你的意思是将 count++; 放在 if(count == 1) 语句的 else 子句中。 - Pieter888
不需要把 count++ 放在 else 语句块内部。 - V.J.
2
但如果count的默认值为0。当用户按下返回按钮时,它会首先执行count ++;,因此该值现在为1,然后它将检查count的值是否等于1,这始终为真,活动将调用finish()。还是我完全错过了什么? - Pieter888
抱歉,我们必须在条件之后放置count++。 我太饿了,所以我制造了这个问题。 对不起亲爱的, - V.J.
5
好的,如果我(或孩子)不小心按下它一次(它设为true),然后过了大约30秒,我(或孩子)再次按返回按钮。哦,它退出应用程序中间,但问题(或主题)应该是“在连续两次点击返回按钮时退出应用程序。”如果在不到2-3秒的时间内未再次按下返回按钮,则重置FLAG =默认值。 - sai

2
像这样捕获后退按钮事件:
public void onBackPressed() 
{
    //Add your logic here
    return;
}

现在创建一个标志,使您的应用程序不会在第一次启动时关闭。最后,在活动上调用finish();来结束您的活动。
要快速显示Toast,请使用以下方法:
Toast.makeText(this, "Press Back again to quit", Toast.LENGHT_SHORT).show();

假设你是在活动类中启动此代码。如果不是,请尝试获取您的活动上下文而不是使用 this


谢谢。我知道如何显示一个“Toast”,我只是想知道这个功能是否是内置的(例如通过清单中的标志打开)。 - Thorsten Dittmar
没问题!我认为谷歌不会在Android中构建这样的功能,尽管它对某些应用程序很有用,但它打破了应用程序/活动应该工作的默认规则。 - Pieter888
1
这是真的,即使我认为它特别有用,例如对于一个网页浏览器,在按下“返回”按钮时可以回到历史记录中的网站。 - Thorsten Dittmar

2

对于 API 级别 1,覆盖活动的

public boolean onKeyDown(int keyCode, KeyEvent event) {
  if (keyCode == KeyEvent.KEYCODE_BACK) {
    ....

对于API 5及以上版本,请参阅Pieter888所说的内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接