【发布时间】:2010-11-10 13:44:20
【问题描述】:
当我意识到 Android 的进度对话框或微调器中没有取消按钮时,我正面临着类似于 this person(自 2008 年 1 月起)所经历的令人头疼的时刻。现在是 2009 年 7 月,我刚刚安装了 Android 的纸杯蛋糕版本。这件事变了吗?如果没有,您是否在对话框中添加了取消按钮?您是如何做到的?
【问题讨论】:
标签: java android user-interface
当我意识到 Android 的进度对话框或微调器中没有取消按钮时,我正面临着类似于 this person(自 2008 年 1 月起)所经历的令人头疼的时刻。现在是 2009 年 7 月,我刚刚安装了 Android 的纸杯蛋糕版本。这件事变了吗?如果没有,您是否在对话框中添加了取消按钮?您是如何做到的?
【问题讨论】:
标签: java android user-interface
不确定整个取消按钮...我听说过 onCancel() 方法未正确触发的报告。我的解决方案只是在对话框上制作一个普通按钮,并在按下按钮时调用返回。
private void createCancelProgressDialog(String title, String message, String buttonText)
{
cancelDialog = new ProgressDialog(this);
cancelDialog.setTitle(title);
cancelDialog.setMessage(message);
cancelDialog.setButton(buttonText, new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
// Use either finish() or return() to either close the activity or just the dialog
return;
}
});
cancelDialog.show();
}
然后只需在活动的其他地方使用简单的调用方法
createCancelProgressDialog("Loading", "Please wait while activity is loading", "Cancel");
相当简单的解决方案,但它可以解决问题;) 还要注意,cancelDialog 是一个活动擦除变量,如果您不需要从其他地方调用它,那么您应该能够将变量的范围限制为该方法。
【讨论】:
我不是 Android 用户或开发人员,但我认为链接到线程中给出的答案相当不错:所有 Android 设备上都有一个硬件“返回”键。用户应该知道按 Back 以退出他们当前正在进行的任何活动。
因此,UI 设计人员认为没有必要包含 GUI 后退/取消按钮。这可以看作是DRY原则的UI应用;如果已经有一种方法可以做某事,那就足够了。
【讨论】:
硬件密钥是这里的答案。我会小心地将 DRY 原则推广到 UI。在很多情况下,您需要通过标题、正文、颜色和图像反复向用户敲击、敲击、敲击同一个点。
用户不会像阅读小说那样“阅读”用户界面。他们扫描阅读。
【讨论】:
我不能代表其他应用程序,但在我的应用程序中,任何可能导致 UI 线程等待的东西都在单独的线程中执行。我要做的最多就是在标题栏中显示一个小的进度微调器,让用户知道后台正在发生一些事情。
【讨论】:
作为一名 Android 用户和开发人员,我可以说,根据我对平台的理解,我认为在无取消进度对话框中默认没有取消按钮是有充分理由的。
作为开发者,这些对话框默认是不能取消的,也就是说,你必须明确地将它们设置为可取消。
这是有道理的,因为它们的目的是通过 UI 线程提醒用户,在用户继续使用应用程序之前,其他地方正在进行一些对 UI 线程更新很重要的工作。
例如,当获取一个数据列表以占据一个空屏幕时,没有任何可交互的内容,用户需要知道正在发生的事情,并期望没有可交互的内容直到这个过程完成。
但是,在某些情况下,例如从 Internet 检索数据,过程“粗略”并且由于连接问题,您可能无法完成请求,并卡在此处。
作为开发,您可以在其中启用可取消对话框。
现在作为一个清楚了解Android UI范式的用户,我知道如果我想回到我之前正在做的事情,或者“取消”当前的操作,我应该点击返回键。
作为用户,知道在 Android 中,菜单键通常可以显示隐藏的选项,有时在看似空白的屏幕上无法交互。
这是用户期望的行为,也是平台的设计方式。您可以很好地添加一个取消按钮,但从了解他们手机的用户的角度来看,这没有什么区别,返回键显然是为此目的的预期选择。
Activity 和 UI 有一个流程,您在“堆叠”的 Activity 和 UI“屏幕”中流动,而后退按钮本质上是“弹出”堆栈中的最后一件事,让您返回到之前的位置。如果您将对话框视为这些活动中的另一个,则希望将其从堆栈顶部弹出以返回到下面的内容或之前的活动。
如果开发人员有一个无法通过 back 取消的对话框,则要么是设计使然,在某些情况下可能有很好的理由,要么是开发不善和对开发人员的疏忽。部分。
【讨论】: