如何更改 android 中 doInBackground asyncTask 中的 (String ...params) 参数列表?
How do I change (String ...params) argument list in doInBackground asyncTask in android?
默认情况下,api asyncTask 的签名是 doInBackground(Param ...params)
在我的应用程序中我有这个签名:
public String doInBackground(String ...params)
我试过改成这样:
public String doInBackground(String param, int x)
但它给我错误:
class DataTasker must be declared abstract or implement abstract method 'doInBackground(Params...params)
我知道这 3 个点是一个数组,我可以像
一样访问它
参数[0],参数[1].
但仍然很困惑,在我的主程序中 activity class 我想将此数据传递给后台任务:一个字符串,一个整数
DataTasker data = new DataTasker() ;
data.execute("mister x " , 56) ;
但显然,我必须只传递一个参数
你可以试试,
将整数转换为字符串并通过 "mister x"
传递
DataTasker data = new DataTasker() ;
data.execute("mister x " , String.valueOf(56)) ;
您可以访问两个值作为参数并将第二个参数再次转换为整数
@Override
protected JSONObject doInBackground(String... params) {
String user=params[0];
int value = Integer.parseInt(params[1]);
}
我相信你可以使用 Object 而不是 String 然后它看起来像 public String doInBackground(Object ...params)
。而且您还必须将 params[0] , params[1] 转换为需要的类型。
But apparently, i must pass only one argument
不,你想传多少就传多少。它们都必须是相同的基本类型。
部分选项:
将类型声明为 Object
。这将需要大量转换。
将类型声明为 String
,传入 String
表示 int
,稍后再将其转换回来。
通过 DataTasker
构造函数传递一个或另一个参数。
通过 DataTasker
上的 setter 传递一个或另一个参数。
您可以做的一件事是创建 AsyncTask 的扩展,其中 doInBackground 所需的参数是一个对象。像这样:
private class DataTasker extends AsyncTask<Object, Void, String>
这样您就可以在 doInBackground
方法中进行参数转换。
默认情况下,api asyncTask 的签名是 doInBackground(Param ...params)
在我的应用程序中我有这个签名:
public String doInBackground(String ...params)
我试过改成这样:
public String doInBackground(String param, int x)
但它给我错误:
class DataTasker must be declared abstract or implement abstract method 'doInBackground(Params...params)
我知道这 3 个点是一个数组,我可以像
一样访问它参数[0],参数[1].
但仍然很困惑,在我的主程序中 activity class 我想将此数据传递给后台任务:一个字符串,一个整数
DataTasker data = new DataTasker() ;
data.execute("mister x " , 56) ;
但显然,我必须只传递一个参数
你可以试试,
将整数转换为字符串并通过 "mister x"
传递DataTasker data = new DataTasker() ;
data.execute("mister x " , String.valueOf(56)) ;
您可以访问两个值作为参数并将第二个参数再次转换为整数
@Override
protected JSONObject doInBackground(String... params) {
String user=params[0];
int value = Integer.parseInt(params[1]);
}
我相信你可以使用 Object 而不是 String 然后它看起来像 public String doInBackground(Object ...params)
。而且您还必须将 params[0] , params[1] 转换为需要的类型。
But apparently, i must pass only one argument
不,你想传多少就传多少。它们都必须是相同的基本类型。
部分选项:
将类型声明为
Object
。这将需要大量转换。将类型声明为
String
,传入String
表示int
,稍后再将其转换回来。通过
DataTasker
构造函数传递一个或另一个参数。通过
DataTasker
上的 setter 传递一个或另一个参数。
您可以做的一件事是创建 AsyncTask 的扩展,其中 doInBackground 所需的参数是一个对象。像这样:
private class DataTasker extends AsyncTask<Object, Void, String>
这样您就可以在 doInBackground
方法中进行参数转换。