Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Get Error-必须从UI线程调用方法getText,当前推断的线程为worker_Java_Android_Multithreading - Fatal编程技术网

Java Get Error-必须从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(

在下面的一行中,它给出了一个错误,即:

必须从UI线程调用方法getText,当前推断的线程为“worker”

如何解决该错误

// 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

    }

}