我想简单地将传递整数发送到AsyncTask
。在doInBackground
我无法正确理解。例如:
new LongOperation().execute ( 20 );
我得到了这个结果:
1266-2259/com.sample E/AsyncTask ------------------﹕ [Ljava.lang.Integer;@418e6bd0
我的代码:
private class LongOperation extends AsyncTask<Integer, Void, Integer> {
@Override
protected Integer doInBackground(Integer... params) {
try {
Log.e("AsyncTask ------------------ ", params+"");
getFromServerAndUpdateDB ( params );
} catch (JSONException e) {
e.printStackTrace ();
}
return 0;
}
@Override
protected void onPostExecute(Integer result) {
updateDialog();
notification ();
}
@Override
protected void onPreExecute() {}
@Override
protected void onProgressUpdate(Void... values) {}
}
答案 0 :(得分:0)
params ...是一个数组。试试:
Log.e("AsyncTask ------------------ ", params[0] +"");
干杯
答案 1 :(得分:0)
您正在使用名为&#34; varargs&#34;当你得到整数params
时,如类型后面的三个点所示。这意味着params是一个字符串数组。要获得第一个,您需要像访问任何其他数组一样访问它:params[0]
。
编辑:这是关于varargs的Oracle页面:https://docs.oracle.com/javase/1.5.0/docs/guide/language/varargs.html
答案 2 :(得分:0)
Params是一个Integer数组,所以首先需要获取该数组的第一个索引。
此外,您将String传入Log语句,因此您还需要将Integer转换为String:
Log.e("AsyncTask ------------------ ", Integer.toString(params[0])+"");
这应该可以正常工作。