Ошибка исключения во время выполнения Android ProgressDialog - PullRequest
1 голос
/ 20 марта 2011

У меня проблемы с попыткой добавить ProgressDialog в мое приложение.В моем классе GameEngine (который ничего не расширяет) у меня есть код, показанный ниже.Первая строка выдает исключение времени выполнения, и хотя я натолкнулся на этот поток, который, кажется, примерно такой же ошибки: Android TimerTask выдает исключение RuntimeException, если в run () добавлено Show ProgressDialog, я не совсем понимаюкак реализовать решение.Любая помощь будет высоко ценится, спасибо.

    //Create ProgressDialog
    ProgressDialog dialog = ProgressDialog.show(context, "", 
            "Loading...", true);

    //Set Clusters before level starts
    for (int i = 0; i < 80; i++)
    {
        updateBacteria();
        updateAttraction();
        checkCollisions();
        moveObjectsAwayFromWalls();
    }

    dialog.dismiss();

Ответы [ 2 ]

2 голосов
/ 20 марта 2011

Вы можете показывать только диалоги в потоке пользовательского интерфейса (который является вашим основным классом, расширяющим Activity).Чтобы сделать это, вы можете написать Handler и использовать его для отправки сообщений из потока, не являющегося пользовательским интерфейсом, в поток пользовательского интерфейса.Android имеет пример этого в своем примере ProgressDialog. Просмотрите фрагмент кода, который они имеют в разделе «Пример ProgressDialog со вторым потоком».

Вы также можете следовать тому же методу, который написан в ответе по предоставленной вами ссылке, хотя Handler - более надежный подход.

1 голос
/ 20 марта 2011

Если этот метод не запущен в вашем потоке Main Activity, вы должны изменить его.как?Установите Обработчик в основном упражнении и передайте его потоку (выше).В обработчике вы должны реализовать часть вашего метода, связанную с GUI (то есть ProgressDialog).Когда вам нужно показать ProgressDialog, просто позвоните вашему Handler и продолжайте обработку (в этом случае ваш цикл).То же самое для dismiss().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...