2014-02-15 70 views
0

我尝试从n AsyncTask的onPostExecute()方法更改某些UI元素,但它不起作用...我不知道为什么我已经完成了一些时间更早,它工作没有任何问题....任务上传一张照片到服务器,它的工作原理;我不为现在关心的结果只是想写点东西在UI无法从AsyncTask更新UI

mainactivity代码:

ImageUpload post=new ImageUpload(imagePath.toString(),textView); 
       //post.delegate=this; 
       post.execute(imagePath.toString()); 

的AsyncTask代码:

public class ImageUpload extends AsyncTask<String, Void, Void>{ 

    public TextView resp; 

    public ImageUpload(String photoPath, TextView resp){ 
     //other stuff 
     this.resp=resp; 
    } 

    @Override 
    protected Void doInBackground(String... params) { 
     //upload photo 
    } 

    protected void onPostExecute(Void... params) { 
     resp.setText("work done"); 
    } 
} 

文件上传,但没有按TextView的” t改变....任何人都可以看到错误?

+1

尝试在你的'onPostExecute()'方法上放置'@ Override'。 – nKn

回答

4

你必须写onPostExecute这样

@Override 
protected void onPostExecute(Void params) { 
    resp.setText("work done"); 
} 
+1

以前没有使用ovverride使用asynctask ....但我已经改变(void ... params)为(void params),它工作.....它们之间有什么区别? –

0

在这里,你会错过两件事情...... 1. return nulldoInBackground方法 2.添加@Override符号之前onPostExecute方法

@Override 
protected Void doInBackground(String... params) { 
    //upload photo 
    return null; //you have to return a null for Void 
} 

@Override 
protected void onPostExecute(Void result) { 
    resp.setText("work done"); 
}