我希望将一个int
变量传递给我的AsyncTask
。
int position = 5;
我宣布我的AsyncTask是这样的:
class proveAsync extends AsyncTask<int, Integer, Void> {
protected void onPreExecute(){
}
protected Void doInBackground(int... position) {
}
.
.
.
但我收到的错误是:
类型参数不能是基本类型
我可以传递int[]
和Integer
个变量,但绝不会传递int
个变量,我会像这样执行AsyncTask
:
new proveAsync().execute(position);
我能做些什么来传递这个position
吗?
提前致谢!
答案 0 :(得分:17)
将参数传递为Integer
class proveAsync extends AsyncTask<Integer, Integer, Void> {
protected void onPreExecute(){
}
protected Void doInBackground(Integer... position) {
int post = position[0].intValue();
}
.
.
.
执行时执行此操作
new proveAsync().execute(new Integer(position));
您可以使用AsyncTask
intValue()
中的int值
答案 1 :(得分:5)
像这样使用它。
class proveAsync extends AsyncTask<Integer, Void, Void> {
protected void onPreExecute(){
}
protected Void doInBackground(Integer... params) {
int position = params[0];
...
在数组中传递位置。 e.g:
Integer[] asyncArray = new Integer[1];
asyncArray[0] = position;
new proveAsync().execute(asyncArray);
答案 2 :(得分:3)
您也可以使用AsyncTask的构造函数。
class proveAsync extends AsyncTask<Void, Void, Void> {
int position;
public proveAsync(int pos){
position = pos;
}
protected void onPreExecute(){
}
protected Void doInBackground(Void... args) {
}
.
.
然后使用它:
new proveAsync(position).execute();
并且您可以按照要求传递任何内容,而不会以这种方式更改返回类型和参数。