我使用以下代码:
//(...)
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...");
未被调用。我做错了什么?
答案 0 :(得分:2)
它被调用但是你打电话
translationTextView.setText(translateTask.get() + "<BR>");
和get()
是阻止通话
请尝试在onPostExecute()
中设置文字。如果我理解正确,那么这样的事情应该能给你你想要的东西
//(...)
translationTextView.setText("Searching for translation...");
translationTextView.setVisibility(View.VISIBLE);
myAsyncTask = (MyAsyncTask) new MyAsyncTask().execute(someString);
然后,假设MyAsyncTask
是Activity
来电translationTextView.setText()
的内部类,请插入您尝试从doInBackground()
答案 1 :(得分:1)
正如codeMagic指出的那样,如果你还没有覆盖onPostExecute()
子类的AsyncTask
方法。它在主线程上执行,你应该在那里更新你的UI。