2013-05-20 3 views
2

Я использую AsyncTask вычислить двойной, а затем я хочу опубликовать это двойное значениеAsyncTask onProgressUpdate (Double ... стоимость)

private class CalcTask extends AsyncTask<Void, Double, Void>{ 
    @Override 
    protected Void doInBackground(Void... parms){ 
     //Completes calculations and places them in a double 

     double calc = 54.245555 //arbitrary number for this example 
     publishProgress(calc); 

     return null; 
    } 

    protected void onProgressUpdate(Double... calc){ 
     textview.setText("Value: " + calc); 
    } 
} 

В настоящее время выход:

Значение: [L] java.lang.Double; @ 4054d180

Есть ли способ опубликовать двойное значение, а не адрес шестнадцатеричного?

+1

Это имеет сходную причину как проблемы в вашем другом вопросе, тоже ([см моего ответа здесь] (http://stackoverflow.com/a/16662775/ 119114)). Критической точкой является то, что **, даже если вы передаете одно значение ** в 'publishProgress()', 'onProgressUpdate()' будет вызван назад и передан ** массив ** значений. Это делается таким образом, чтобы вы могли гибко передавать значения прогресса 1..N сразу. – Nate

ответ

2

Вы видите Object#toString массив Doublecalc в onProgressUpdate. Просто используйте первый элемент массива:

textview.setText("Value: " + calc[0]); 
Смежные вопросы