2009-07-14 3 views
11

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

ответ

11

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

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

+1

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

+3

Кнопка BACK, на мой взгляд, является синонимом кнопки «Назад» браузера. Мне неинтересно (и даже техникам в моем офисе), что откат назад отбрасывает диалог. –

+0

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

2

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

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

1

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

16

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

0

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

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

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

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

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

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

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

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

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

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

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

Смежные вопросы