onProgressUpdate未调用

时间:2016-06-10 19:25:41

标签: android android-asynctask

为什么onProgressUpdate没有被调用?

public class DoStuff extends AsyncTask<Integer, Integer, String> {
    private MainActivity activity;

    public DoStuff(MainActivity a){
        activity = a;
    }

    protected String doInBackground(Integer... params) {
        Integer loops = params[0];
        for (int i = 0; i <= loops.intValue() ; i++) {

            SystemClock.sleep(1000);
            publishProgress(new Integer((i / loops) * 100));

        }
        return "Done: " + loops.intValue();
    }

    protected void onProgressUpdate(Integer progress)
    {
        activity.updateProgress("" + progress.intValue() + "%");
    }

}

2 个答案:

答案 0 :(得分:1)

您使用onProgressUpdate

的错误签名

更改

protected void onProgressUpdate(Integer progress)
{
    activity.updateProgress(""+progress.intValue() +"%");
}

protected void onProgressUpdate(Integer... progress)
{
    activity.updateProgress(""+progress[0].intValue() +"%");
}

答案 1 :(得分:1)

你必须改变:

protected void onProgressUpdate(Integer progress) {
    activity.updateProgress(""+progress.intValue() +"%");
}

为:

protected void onProgressUpdate(Integer... progress) {
   activity.updateProgress(""+progress.intValue() +"%");
}

参数必须是您声明为第二个

的类型的变量