Метод runOnUiThread (Runnable) в типе Activity не применим для аргументов (void)

Я пытаюсь создать диалог из потока, отличного от UI, в onUtteranceCompleted ():

runOnUiThread( new Thread(new Runnable() { public void run() { MyDialog.Prompt(this); } }).start()); 

Prompt () – это простой статический метод класса MyDialog:

  static public void Prompt(Activity activity) { MyDialog myDialog = new MyDialog(); myDialog.showAlert("Alert", activity); } 

Проблема в том, что я купил две ошибки за то, что я пытаюсь сделать:

  1. Метод runOnUiThread (Runnable) в типе Activity не применим для аргументов (void)
  2. Метод Prompt (Activity) в типе MyDialog не применим для аргументов (new Runnable () {})

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

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

Это должно быть:

 runOnUiThread(new Runnable() { public void run() { MyDialog.Prompt(NameOfYourActivity.this); } }); 

В нем говорится, что это неприменимо для аргументов (void), потому что вы пытаетесь запустить поток, используя метод start (который является методом void). runOnUiThread получает runnable-объект, и вам не нужно беспокоиться о его запуске, которое выполняется ОС для вас.

Что касается второй ошибки, это происходит потому, что в этой области this относится к объекту Runnable который вы инициализируете, а не к ссылке на активность. Итак, вы должны явно указать, к чему this относится (в данном случае YourActivityName.this ).

Intereting Posts
Могу ли я подавить перевод для определенной фразы в описании приложения в Google Play Store? Adwhirl вызывает приложение для Android Как показать фрагмент фрагмента над фрагментом выхода во время анимации. Есть ли способ контролировать, насколько темным становится экран, когда он тускнеет? Виджет onUpdate вызывается при запуске операции конфигурации Android LinearLayout Gradient Background Как указать цвет фона в ресурсах списка состояний цвета? Почему Retrofit не может правильно закодировать строку запроса с квадратными скобками? Android обнаружит нажатие клавиши для OnScreen Keyboard Android WifiManager getScanResult жалуется на разрешение ACCESS_COARSE_LOCATION или ACCESS_FINE_LOCATION, хотя объявленное разрешение Удалить ведущий «0» в день месяца SimpleDateFormat Аннотации доступны только для java 1.5 и выше при создании бэкэнда приложений Google App Engine (JDK 1.8, новый ADT) Android обнаруживает AudioRecord / способы записи звука без блокировки других приложений Невозможно изменить зависимости конфигурации (после включения моментального запуска) Как установить вкладку по умолчанию для нескольких видов прокрутки с вкладками?