安卓返回键/按钮,如何完美使用?

3
我正在开发一个应用程序,它可以从互联网上下载内容并显示,类似于Web浏览器。随着深入使用,后退键堆栈会填满。因此,现在当你按下返回键时,它会从列表中加载上一次访问的URL,并继续前往第一个访问的URL,最后一次按下返回键时,应用程序关闭。
但是有一个问题,假设您浏览了很长时间,后退键列表中有很多URL。现在您想关闭应用程序,但您必须不断按下返回键,直到最后一个URL然后关闭。这不是一个好主意,我的意思是非常烦人。如果我想关闭应用程序,必须只需单击即可完成。因此,我想出了一个放置退出按钮的想法,但这对于Android来说仍然是一个糟糕的设计。
我想知道你们是否有更好的建议,那将非常好。

http://developer.android.com/guide/topics/ui/actionbar.html#Home - Josh Lee
是的,那就相当于退出按钮。 - xmen
在菜单中添加一个退出按钮。 - Sagar Waghmare
4个回答

4
一些建议:您可以在您的返回按钮上创建一个onLongPress事件。这通常在许多硬件/软件应用程序中完成,因此很多人应该凭直觉尝试。如果用户按下一次返回按钮,则会返回,如果他在返回按钮上停留时间较长,则会关闭应用程序,或者在确认对话框中要求确认应用程序关闭。
因此,在您的情况下,您将拥有:
@override
public boolean onKeyLongPress(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) 
    {
        // close the app
        return true;
    }
    return super.onKeyLongPress(keyCode, event);
}

更好的是,您可以实现这个功能,并添加一个菜单。当用户点击菜单按钮时,他将看到退出图标,并像那样退出。

1

我认为退出 按钮 并不总是一个不好的选择,特别是当你需要这样做时。但你可以考虑另一种解决方案 -

onbackpress 通常会退出 webview 并添加一个类似于 web浏览器backbutton


我总是更喜欢长按返回键来关闭应用程序。但是没有办法知道它。 - xmen
1
你也可以处理长按键。public boolean onKeyLongPress(int keyCode, KeyEvent event) - stinepike

0

我认为Milos的回答是最好的方法...你还可以在菜单中添加“退出”选项,如下所示:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.your_option_menu, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.exit:
        // CLose your app
        finish();
        return true;
    }
    return false;
}

这是菜单的布局:your_option_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/exit"
          android:icon="@android:drawable/ic_menu_exit"
          android:title="@string/Exit" />
</menu>

0

在我看来,任何关闭应用程序的替代方法都是对Android的设计和实践不好的思路。如果用户想立即退出应用程序,他将使用Home按钮而不是返回按钮,这就是Home按钮的作用,也是为什么它在那里的原因。

再次强调,这是我的意见,但我认为在此类应用程序(你提到了浏览器类型的东西)中,一个好的设计是例如用户想要从导航树的开头开始浏览器,您可以使用Up按钮(如http://developer.android.com/guide/topics/ui/actionbar.html#Home上的评论建议的那样),将您的应用程序带回初始状态。您可以使用带有CLEAR_TOP标志的意图来删除任何现有的Backstack。


但并不是每个用户都知道如何使用Android的主页按钮。然后就会出现负面评价。 - xmen
我注意到你将BackLongPress作为被接受的答案标记了。你认为一个不知道主页按钮(整个系统上最中心的按钮)的用户会理解长按吗? - Budius
一些用户不想将应用程序最小化(主页按钮),他们想要完全关闭它。是的,他们可能不知道长按,但返回键是唯一应该这样做的键。我也考虑过快速按下返回键作为一个选项。 :) - xmen

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