1

我正在使用以下代码:

//(...)
translationTextView.setText("Searching for translation...");
translationTextView.setVisibility(View.VISIBLE);

myAsyncTask = (MyAsyncTask) new MyAsyncTask().execute(someString);

try {
    //As I understand it should wait here until AsyncTask is completed. But why for the time of execution translateTextView value is ""?
    translationTextView.setText(translateTask.get() + "<BR>");
} catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (ExecutionException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

问题是translationTextView值是“”,直到myAsyncTask完成。所以看起来像

translationTextView.setText("Searching for translation...");

不叫。我做错了什么?

4

2 回答 2

2

它被调用,但随后你调用

translationTextView.setText(translateTask.get() + "<BR>");

并且get()是阻塞调用

而是尝试在您的onPostExecute(). 如果我理解正确,那么这样的事情应该会给你你想要的

   //(...)
        translationTextView.setText("Searching for translation...");
        translationTextView.setVisibility(View.VISIBLE);

        myAsyncTask = (MyAsyncTask) new MyAsyncTask().execute(someString);

然后,假设您的调用MyAsyncTask的内部类插入了您尝试返回的任何内容ActivitytranslationTextView.setText()doInBackground()

于 2013-06-20T02:21:48.970 回答
1

正如 codeMagic 指出的那样,如果您还没有覆盖子类的onPostExecute()方法,请覆盖。AsyncTask它在主线程上执行,您应该在那里更新您的 UI。

于 2013-06-20T03:08:31.623 回答