Java Get Error-必须从UI线程调用方法getText,当前推断的线程为worker
在下面的一行中,它给出了一个错误,即: 必须从UI线程调用方法getText,当前推断的线程为“worker” 如何解决该错误Java Get Error-必须从UI线程调用方法getText,当前推断的线程为worker,java,android,multithreading,Java,Android,Multithreading,在下面的一行中,它给出了一个错误,即: 必须从UI线程调用方法getText,当前推断的线程为“worker” 如何解决该错误 // Get the text from EditText String wordsToTranslate = **translateEditText.getText()**.toString(); 粗体部分告诉我有错误。有没有办法解决这个问题 试试这个: 字符串wordsToTranslate=translateeditext.getText().toString(
// Get the text from EditText
String wordsToTranslate = **translateEditText.getText()**.toString();
粗体部分告诉我有错误。有没有办法解决这个问题
试试这个:
字符串wordsToTranslate=translateeditext.getText().toString()
新建Translate().execute(wordsToTranslate)
类转换扩展异步任务{
@凌驾
受保护的字符串doInBackground(字符串…args){
//建筑参数
字符串wordsToTranslate=args[0];
//做你的工作
}
}
每个应用程序都有自己的运行UI对象的特殊线程,您只能从该线程访问UI对象
您应该查看android开发者网站,了解如何与UI线程通信:
您不能在“doInBackgound”方法中执行与UI相关的操作。您只能从UI线程使用UI(EditText是UI的一部分)
doInBackground
应该在后台线程中调用。这就是问题所在。在doInBackground
之外获取文本,例如在onPreExecute
中,感谢快速响应人员。我只需要删除那行代码并将其放在覆盖之前(意思是在doInBackground之外),它就解决了问题。谢谢你的帮助。:)
class Translate extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... args) {
// Building Parameters
String wordsToTranslate = args[0];
//do your work
}
}