Android: тематическая активность диалога должна быть модальной - PullRequest
3 голосов
/ 11 февраля 2010

Кнопка на нашем экране приводит к отображению действия с темой «диалога». У нас возникла проблема: если дважды быстро щелкнуть кнопку, диалоговое окно открывается дважды.

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

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

Что подводит меня к моему вопросу ... Есть ли способ перевести тематическую деятельность в диалоге в модальное состояние, когда пользователь не может нажимать кнопки на активности ниже?

Возможно, я мог бы вручную выполнить это, отключив все в onPause и включив его снова в onResume, но это кажется большой работой! У кого-нибудь есть более простое решение?

Ответы [ 2 ]

1 голос
/ 11 февраля 2010

Вдоль линий отключения вещей (которые кажутся хакерскими и неправильными), но если нет реального решения. Отключение может быть сделано простым возвратом в событие нажатия кнопки. Пока вы сбрасываете bool, когда диалог возвращается или в onResume

boolean clicked;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Button b = (Button)findViewById(R.id.Button01);
    b.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            if (clicked)
                return;
            clicked = true;
            // show dialog
        }
    });
}
0 голосов
/ 10 декабря 2011

Другое решение состоит в том, чтобы не запускать свою деятельность с темой диалога, а стандартной. В вашем XML для действия укажите, скажем, текстовое представление, которое занимает весь экран. Однако сделайте текстовое представление прозрачным (или полу, или цветным, или ....) и кликабельным.

Затем в том же XML-файле создайте «диалог», чтобы он отображался поверх текстового представления. Теперь это похоже на диалог, активность за ним все еще можно увидеть, но клики за пределами вашего диалога потребляются прозрачным текстовым представлением. Например:

<TextView android:id="@+id/ViewHider"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#aa000000"
    android:enabled="true"
    android:clickable="true"
    ></TextView>

<!-- Then put your "dialog" xmal here -->
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...