Тост из FileObserver - PullRequest
       0

Тост из FileObserver

3 голосов
/ 11 мая 2011

У меня проблема. Я использую FileObserver, который перемещает новые файлы из просматриваемых каталогов в другой, ранее указанный каталог. В моих мыслях должно быть показано всплывающее сообщение с надписью «Файл xy был перемещен», пока наблюдатель наблюдает за каталогом, даже если приложения находятся только в фоновом режиме. Но у меня не получилось. Мне всегда говорят, что есть RuntimeException, и что это невозможно сделать без вызова Looper.prepare().

05-11 13: 21: 28.484: WARN / System.err (3397): java.lang.RuntimeException: не может создать обработчик внутри потока, который имеет не называется Looper.prepare ()

Я тоже пробовал использовать обработчик, но я так и не заработал.

У кого-то еще есть идея? Заранее спасибо.

С уважением, Тоби

Ответы [ 4 ]

1 голос
/ 10 января 2014

Перед оператором Toast добавьте следующее:

runOnUiThread(new Runnable() {
            public void run()
            {
                Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT).show();
            }
        });

Это заставит его работать в потоке пользовательского интерфейса.Надеюсь, это поможет.

0 голосов
/ 11 мая 2011

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

0 голосов
/ 11 мая 2011

Добавьте следующий код в ваш класс:

// Need handler for callbacks to UI Threads
    // For background operations
    final Handler mHandler = new Handler();

    // Create Runnable for posting results
    final Runnable mUpdateResults = new Runnable() {
        public void run() {
            // Show the toast here.
        }
    };

и в потоке вызова вашего fileobserver поместите следующий фрагмент кода:

mHandler.post(mUpdateResults);

и не используйте getApplicationContext()вместо этого попробуйте YourClassPhysicalName.java для контекста тоста.

0 голосов
/ 11 мая 2011

Что вы используете для контекста сообщения Toast? Для этого нужно будет что-то отобразить на экране.

...