3

我正在开发一个应用程序,它可以从互联网上下载东西并显示,更像是网络浏览器。你越深入,后面的钥匙栈就会被填满。所以现在当你按下返回键时,它会从列表中加载最后一个 URL,然后一直到第一个访问的 URL,最后一次按下返回键,应用程序就会关闭。

但是有一个问题,假设你浏览了很长时间,后键列表中有这么多的 URL。现在您想关闭应用程序,但您必须按住返回键直到最后一个 URL,然后它将关闭。这不是一个好主意,我的意思是它非常烦人。如果我想关闭应用程序,必须单击一下。所以我想出了一个想法来放置一个退出按钮,但它对于 android 来说仍然是一个糟糕的设计。

我想知道你们是否有更好的方法可以建议,那将非常好。

4

4 回答 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);
}

更好的是,你可以实现这个,并添加一个菜单,当用户点击菜单按钮时,他会看到退出图标,然后像这样退出。

于 2013-04-23T14:21:09.083 回答
1

我认为退出Button并不总是一个糟糕的选择,特别是当你需要这样的东西时。但是您可以考虑另一种解决方案-

onbackpress通常退出webview并添加一个backbuttonlike webbrowsers

于 2013-04-23T14:14:52.677 回答
0

恕我直言,关闭应用程序的任何解决方法对于 Android 来说都是糟糕的想法和糟糕的设计实践。如果用户想立即退出应用程序,他将使用主页按钮,而不是返回按钮,这就是主页按钮的用途,这就是它存在的原因。

再次这是我的观点,但我相信这种类型的应用程序(你提到的网络浏览器,类型的东西)的一个好的设计是,例如用户想要从导航树的开头启动浏览器,你使用向上按钮(如评论之一http://developer.android.com/guide/topics/ui/actionbar.html#Home中的建议)将您的应用程序带入初始状态。您可以使用带有 CLEAR_TOP 标志的意图来删除任何现有的 Backstack。

于 2013-04-23T14:36:03.763 回答
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>
于 2013-04-23T14:46:14.180 回答