Android对AsyncTask的简单解析参数

时间:2014-11-21 18:46:12

标签: android android-asynctask

我想简单地将传递整数发送到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) {}
}

3 个答案:

答案 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])+"");

这应该可以正常工作。