这是应该执行某些操作的代码的一部分,然后调用onPostExecute事件。
出于某种原因,它没有调用它,并且在eclipse中我可以看到该方法用黄色标记(未使用的方法)...
我不明白为什么这样......
你知道为什么吗?
谢谢!
PS:我在这里看了一些帖子,没找到我的解决方案......
final ImageButton sync = (ImageButton) findViewById(R.id.syncChanges);
sync.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
sync.setImageResource(R.drawable.none);
sync.setBackgroundResource(R.drawable.animation);
final AnimationDrawable frameAnimation = (AnimationDrawable) sync.getBackground();
frameAnimation.start();
class DownloadFilesTask extends AsyncTask<String, Void, String[]> {
protected String[] doInBackground(String...strings) {
try {
OptionScraper.run(strings[0], Integer.parseInt(strings[1]));
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return OptionScraper.GetChanges();
}
protected void onPostExecute() {
InitChangesToText();
frameAnimation.stop();
sync.setImageResource(R.drawable.sync);
}
}
new DownloadFilesTask().execute(classLetter,classNum);
}
});
答案 0 :(得分:6)
您未正确覆盖onPostExecute()
。它需要一个参数(从doInBackground()
返回的对象)。但是您使用不带参数的签名覆盖/创建方法。这意味着框架调用默认实现而不是您自己的实现。什么都不做。
所以改变
protected void onPostExecute() {
到
protected void onPostExecute(String[] result) {
在这种情况下。
我还建议在该方法中添加@Override
注释,在这种情况下,eclipse或类似的工具应该首先指出这一点。
答案 1 :(得分:0)
从新的OnClickListener()中获取AsyncTask。在Activity中直接将其定义为私有类。