Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何实施";再次按“上一步”退出;特征?_Android - Fatal编程技术网

Android 如何实施";再次按“上一步”退出;特征?

Android 如何实施";再次按“上一步”退出;特征?,android,Android,某些应用程序(例如Dolphin HD浏览器)实现以下功能: 按“后退”键可跳回后堆栈。当显示初始视图/活动/片段并按下“后退”按钮时,会出现一个Toast,上面写着“再次按下后退退出”或类似的内容 如何实现此功能?捕获后退按钮事件,如下所示: public void onBackPressed() { //Add your logic here return; } 现在创建一个标志,使应用程序在第一次启动时不会关闭。 最后,通过调用finish(),结束您的活动关于您的活动

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

按“后退”键可跳回后堆栈。当显示初始视图/活动/片段并按下“后退”按钮时,会出现一个
Toast
,上面写着“再次按下后退退出”或类似的内容


如何实现此功能?

捕获后退按钮事件,如下所示:

public void onBackPressed() 
{
    //Add your logic here
    return;
}
现在创建一个标志,使应用程序在第一次启动时不会关闭。 最后,通过调用
finish(),结束您的活动关于您的活动

要快速显示祝酒词,请使用以下命令:

Toast.makeText(this, "Press Back again to quit", Toast.LENGHT_SHORT).show();

假设您是从活动类启动此代码。如果没有,请尝试获取活动的上下文,而不是使用API级别1的
this

覆盖活动的上下文

public boolean onKeyDown(int keyCode, KeyEvent event) {
  if (keyCode == KeyEvent.KEYCODE_BACK) {
    ....
关于API 5级及以上的内容,请参见Pieter888所述。

在课程顶部:

  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;
}

看看开发人员站点,它定义得很清楚。@JoxTraex:谢谢,我知道开发人员站点,我也知道如何影响后台堆栈。我只是觉得这是一些内置功能。@ThorstenDittmar你的问题不是这个意思(关于内置功能)。你问“如何实施……”海比森:我知道。你的观点是什么?@ThorstenDittmar我只是想如果你编辑这个问题,它会更清楚。如果没有,请忽略我的评论。谢谢。我知道如何显示
Toast
,我只是想知道该功能是否是内置的(例如通过清单中的标志打开)。没问题!它不认为谷歌会在Android中构建这样的东西,即使它是一些应用程序的有用功能,它打破了关于应用程序/活动应该如何工作的默认规则。这是真的,即使我认为它特别有用,例如对于Web浏览器,按下后退按钮可以追溯到网站的历史。我想你的意思是把
count++if(count==1)
语句的
else
-子句内的code>中。如果
count
的默认值为
0
,则不需要将count++放在elseb中。当用户按下后退按钮时,它将首先执行
count++
因此值现在是
1
,然后它将检查
count
的值是否等于
1
,这总是正确的,活动将调用
finish()
。或者我完全遗漏了什么?对不起,我们必须在条件后面加上count+。我太饿了,所以我制造了这个问题。。对不起,亲爱的,好吧,如果我(或一个孩子)不小心按了一次(它设置为真),然后在30秒的间隔后,我(或一个孩子再次)按了后退按钮,该怎么办。OMG中间退出应用程序,但这里的问题(或主题)应该是“连续单击后退按钮两次后退出应用程序”。在最长2~3秒内,否则重置标志=默认值。