2017-02-23 51 views
-2

在该线下方它给我的错误说:得到错误 - 该方法的getText必须从UI线程调用,目前推断线程是工人

方法的getText必须从UI线程调用,当前推断的线程是工作者“。

如何解决该错误?

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

大胆的部分是它告诉我存在错误的地方。任何关于如何解决这个问题的想法?

Screen shot of the error

+0

你不能做“doInBackgound”的方法UI相关操作 –

+0

你可以用UI(EditText上工作的一部分的UI)只能从UI线程。 'doInBackground'应该在后台线程中调用。那就是问题所在。在'doInBackground'之外获取文本,例如在'onPreExecute'上。 –

+0

感谢您的快速回复。我只需删除该行代码并将其放在覆盖之前(意味着在doInBackground之外),并解决了问题。感谢所有的帮助。 :) – Mufasa

回答

0

尝试这种情况:

字符串wordsToTranslate = translateEditText.getText()的toString();

new Translate()。execute(wordsToTranslate);

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

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


      //do your work 

    } 

} 
相关问题