2017-02-23 38 views
-2

В строке ниже он дает мне ошибку говоря:Получить ошибки - Метод GetText должен вызываться из потока пользовательского интерфейса, в данный момент выводятся нить рабочего

Метод GetText должен вызываться из потока пользовательского интерфейса, в настоящее время выведенный поток - рабочий ».

Как устранить эту ошибку?

// Get the text from EditText 
String wordsToTranslate = **translateEditText.getText()**.toString(); 

Жирная часть, где говорится, что есть ошибка. Любая идея о том, как это решить?

Screen shot of the error

+0

Вы не можете сделать пользовательский интерфейс, связанный операцию в методе «doInBackgound» –

+0

Вы можете работать с UI (EditText является частью UI) только из потока пользовательского интерфейса. 'doInBackground' предполагается вызывать в фоновом потоке. Это проблема. Получите текст вне 'doInBackground', например, в' onPreExecute' –

+0

Спасибо за ответы быстрого ответа. Мне просто пришлось удалить эту строку кода и поместить ее перед переопределением (что означает вне doInBackground), и это устранило проблему. Спасибо за помощь. :) – Mufasa

ответ

0

Попробуйте это:

Строка wordsToTranslate = translateEditText.getText() ToString();.

новый перевод(). Execute (wordsToTranslate);

class Translate extends AsyncTask<String, String, String> { 

    @Override 
    protected String doInBackground(String... args) { 
      // Building Parameters 
      String wordsToTranslate = args[0]; 


      //do your work 

    } 

} 
0

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

Вы должны смотреть на андроид разработчика сайта об общении с потоком пользовательского интерфейса:

https://developer.android.com/training/multiple-threads/communicate-ui.html

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