Почему в диалоговом окне прогресса Android нет кнопки отмены?

Мне грозит головокружение, похожее на то, что этот человек (с января 2008 года) испытал, когда понял, что нет Cancel в диалоговом окне прогресса Android или проигрывателях. Сейчас в июле 2009 года, и я только что установил версию для кексов Android. Это изменилось? Если нет, добавляете ли вы кнопку отмены в диалоговом окне и как вы это делаете?

Ответ 1

Я не являюсь пользователем Android или разработчиком, но я думаю, что ответ, данный в связанном потоке, довольно приличный: на всех устройствах Android есть аппаратный "задний" ключ. Пользователи должны знать, чтобы нажать Back to back из любой активности, в которой они сейчас находятся.

Таким образом, разработчики пользовательского интерфейса считают ненужным включить кнопку возврата/отмены GUI. Это можно рассматривать как приложение пользовательского интерфейса DRY; если уже есть один способ сделать что-то, достаточно.

Ответ 2

не уверен, что все кнопки отменить... я слышал, что сообщения о методе 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 - это переменная очистки процесса, если вам не нужно ее вызывать из другого места, тогда вы должны уйти, просто ограничив область действия этого метода.

Ответ 3

Ключ аппаратного обеспечения - это ответ. Я был бы осторожен в обобщении принципа DRY на пользовательские интерфейсы. Есть много случаев, когда вам нужно забивать молотком, забивать одну и ту же точку для пользователя несколько раз, используя заголовки, основной текст, цвета и изображения.

Пользователи не читают "UI", как вы читаете роман. Они сканируют чтение.

Ответ 4

Я не могу говорить для других приложений, но в моем случае все, что может вызвать ожидание потока пользовательского интерфейса, выполняется в отдельном потоке. Самое большее, что я сделаю, это показать небольшую прокрутку прогресса в заголовке, чтобы пользователь знал, что что-то происходит в фоновом режиме.

Ответ 5

Как пользователь Android и разработчик, я могу сказать, на мой взгляд, и основываясь на моем понимании платформы, что есть веская причина не иметь кнопку отмены по умолчанию в диалоговом окне прогресса без отмены.

Как разработчик, эти диалоги не могут быть отменены по умолчанию, то есть вы должны явно указать их как отмену.

Это имеет смысл, поскольку их цель - предупредить пользователя через поток пользовательского интерфейса о том, что некоторые работы происходят в другом месте, что важно для обновления потока пользовательского интерфейса, прежде чем пользователь должен продолжить использование приложения.

Например, когда вы выбираете список данных для заселения пустого экрана, с ним нет ничего, и пользователю нужно знать, что что-то происходит, и ожидать, что нет ничего доступного для взаимодействия с пока этот процесс не завершится.

Однако могут быть случаи, такие как извлечение данных из Интернета, где процесс является "отрывочным" и из-за проблем с подключением, возможно, вы не сможете выполнить запрос и застряли здесь.

В этом случае вы можете активировать диалог для отмены.

Теперь, как пользователь, который четко понимает парадигму интерфейса Android, я знаю, что если я хочу вернуться к тому, что я делал раньше, или "отменить" текущую операцию, я должен нажать на задний ключ.

Как пользователь, он не отличается тем, что знает, что в Android клавиша меню часто может отображать скрытые параметры, иногда на незаметном экране без возможности взаимодействия.

Это поведение, которое пользователь ожидает, и способ разработки платформы. Вы можете очень хорошо добавить кнопку отмены, но с точки зрения пользователей, которая понимает их телефон, это не имеет никакого значения, задняя клавиша, безусловно, является предполагаемым выбором для этой цели.

Действия и пользовательские интерфейсы имеют поток, вы пропускаете действия и пользовательские "экраны", которые "сложены", а кнопка "назад" по существу "выталкивает" последнюю вещь из стека, чтобы вернуть вас туда, где вы были раньше. Если вы видите диалог в качестве другого из этих действий, вы хотите вытащить его из верхней части стека, чтобы вернуться к тому, что находится под ним, или к предыдущей активности.

Если у разработчика есть диалог, который нельзя отменить назад, это либо, по дизайну, для которого в некоторых случаях может быть очень хорошей причиной, или это плохое развитие и надзор над разработчиком часть.