在该线下方它给我的错误说:得到错误 - 该方法的getText必须从UI线程调用,目前推断线程是工人
方法的getText必须从UI线程调用,当前推断的线程是工作者“。
如何解决该错误?
// Get the text from EditText
String wordsToTranslate = **translateEditText.getText()**.toString();
大胆的部分是它告诉我存在错误的地方。任何关于如何解决这个问题的想法?
在该线下方它给我的错误说:得到错误 - 该方法的getText必须从UI线程调用,目前推断线程是工人
方法的getText必须从UI线程调用,当前推断的线程是工作者“。
如何解决该错误?
// Get the text from EditText
String wordsToTranslate = **translateEditText.getText()**.toString();
大胆的部分是它告诉我存在错误的地方。任何关于如何解决这个问题的想法?
尝试这种情况:
字符串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
}
}
每个应用程序都运行UI对象自己特殊的线程,你只能从该线程访问UI对象。
你应该看看在Android开发者网站关于与UI线程通信:
https://developer.android.com/training/multiple-threads/communicate-ui.html
你不能做“doInBackgound”的方法UI相关操作 –
你可以用UI(EditText上工作的一部分的UI)只能从UI线程。 'doInBackground'应该在后台线程中调用。那就是问题所在。在'doInBackground'之外获取文本,例如在'onPreExecute'上。 –
感谢您的快速回复。我只需删除该行代码并将其放在覆盖之前(意味着在doInBackground之外),并解决了问题。感谢所有的帮助。 :) – Mufasa