Android AsyncTask OnPostExecute未更新TextView
我有一个Android AsyncTask OnPostExecute未更新TextView,android,android-asynctask,textview,Android,Android Asynctask,Textview,我有一个AsyncTask正在运行。我有一个TextView,我模拟了Toast最初产生的消息。 我想在OnPostExecute中成功后清除TextView,但它没有这样做。任务完成后Toast工作正常。如何将OnPostExecute中的TextView设置为空白?用户仍在显示屏幕上显示TextView 错误条件的代码如下所示: @Override protected void onPostExecute(Void result) { FetchingImage=0; if(webL
AsyncTask
正在运行。我有一个TextView
,我模拟了Toast
最初产生的消息。
我想在OnPostExecute
中成功后清除TextView
,但它没有这样做。任务完成后Toast工作正常。如何将OnPostExecute
中的TextView
设置为空白?用户仍在显示屏幕上显示TextView
错误条件的代码如下所示:
@Override
protected void onPostExecute(Void result)
{ FetchingImage=0;
if(webLoadError>0)
{
TextView text = (TextView) findViewById(R.id.textView2);
String temp=" ";
text.setText(temp);
Toast.makeText(getApplicationContext(), "Image not available from the internet.\nDefault or last image loaded.\nTry again later.",Toast.LENGTH_LONG).show();
}
}
尝试以下方法:
((TextView) findViewById(R.id.textView2)).setText("");
编辑:
尝试在onCreate
之外创建一个变量,如TextView文本然后在onCreate
put中:text=(TextView)findViewById(R.id.textView2)代码>
然后只需放入text.setText(“”)代码>在onPostExecute
方法中
看看是否有效。我知道这个线程很旧,但我想我找到了解决方案(至少它对我有效),也许它能帮助其他人:
我有一个包含3个文本视图的视图,默认值是从AsyncTask的“doInBackground”方法接收webservices的值,然后在“onPostExecute”方法上更改其中的文本。问题是,在第一次执行代码时,三个文本视图中只有一个显示ws中的新文本(这是一个实现Zxing条形码阅读器的简单应用程序,从产品读取条形码并从Web服务器获取价格),下一次执行(在应用程序打开后)正在正常更新三个文本视图
因此我注意到,在第一次执行中唯一更新其值的textview的参数“android:textIsSelectable”=true,其他两个参数为false。答对了,在其他两个文本视图中将此参数更改为true解决了问题。那么,我不知道是什么原因导致文本视图不清晰。我所能想到的就是检查您要清除的texview的id是否是您要清除的id,您可能正在清除另一个texview而不知道。这与我在调用异步任务之前输入文本的id相同。所以ID是正确的。我正在尝试使用GONE和make visible,这种方法似乎很有效,但似乎很笨拙。TextView text=(TextView)findViewById(R.id.textView2);text.setVisibility(View.GONE);TextView iv2=(TextView)findViewById(R.id.textView2);iv2.设置可见性(View.VISIBLE);这会使文本视图消失,但不会清除它。我不认为你想要那个。不,我想要文本视图中的文本被清除。但事实并非如此。你说我打错电话了,但我不是。我不想破坏文本视图,重新创建它只是为了清除它。所以我仍然在寻找一个解决方案来清除它。好像setText没有执行。因为如果我可以使用相同的findviewById销毁对象。。。还在看。谢谢你的额外脑细胞。Eclipse需要一个干净的项目。在我这样做之后,这种愚蠢的感觉消失了,两种方法都奏效了。我喜欢你更简洁的指导。谢谢