在AsyncTask中传递多个不同类型的变量

时间:2013-11-06 02:27:41

标签: android android-asynctask

我有一个AsyncTask,在doInBackground()中,我希望调用publishProgress()并传递多个不同类型的变量,比如一个String和一个Integer。我怎样才能做到这一点?我试图定义onProgressUpdate(Object ... values),然后通过publishProgress(StringVar,IntVar)调用它,然后在onProgressUpdate()中,我尝试通过值[0]和值[1]访问它们但是没有'工作。

我怎样才能做到这一点?

感谢。

2 个答案:

答案 0 :(得分:6)

最简单的方法可能是定义一个包含字符串和整数的包装类。然后创建一个异步任务,使用此包装器进行udpates。

public class Wrapper{
    public final String mString;
    public final Integer mInteger;

    public Wrapper(String myString, Integer myInteger){
        mString = myString;
        mInteger = myInteger;
    }
}

答案 1 :(得分:1)

使用类来包装进度值:

class ProgressUpdate {
    public final String detail;
    public final int value;

    public ProgressUpdate(String detail, int value) {
        this.detail = detail;
        this.value = value;
    }
}

然后,发布您的进度:

publishProgress(new ProgressUpdate(detail, value));