2013-11-10 151 views
0

勒芒,即時通訊在這裏約2小時的一件事情,它似乎很簡單,但永遠不會返回對象的數量。獲取靜態方法異步任務總數返回0

我將解釋絲毫代碼:在OnPostExecute

DownloadFileAsyncTask.java(是我的異步任務)

我有這樣的:

if(customAdapter != null){ 
    Log.i("solteiroApp","object count is "+customAdapter.getCount()); 
    ResultActivity.rec_count = customAdapter.getCount(); // HERE I PASS COUNT 
} 

ResultActivity.java

public class ResultActivity extends Activity { 

    public static int rec_count; 
... 

問題是:當我得到中的總是返回0,但我使日誌如何顯示前:

Log.i("solteiroApp","object count is "+customAdapter.getCount()); 

並且這將返回計數正確。

我不知道,因爲這個,如果有人有一個sugestio得到這個計數,請說我,即時在這裏小時試着返回這個計數出現在活動中,但沒有任何返回值我執行的時間,如果我再次使用AsyncTask返回以前的值,請有人幫助我。

+0

是你的asynctask你的活動類的內部類嗎? – Raghunandan

+0

不,是其他類:DownloadFileAsyncTask。java – overallduka

+0

然後你可以使用一個接口作爲回調從asynctask獲取計數到活動類或使asynctask成爲一個內部類,並在'nPostExecute – Raghunandan

回答

0

1,您是否在OnPostExecute被調用之前在onCreate中獲取rec_count?檢查你的代碼 2,如果沒有,在rec_count之前添加volatile:public static volatile int rec_count,請試試看,希望能幫到你。

+0

1 - OnPostExecute之後。我嘗試但返回相同的0 = /。 – overallduka

0

你不能做你想做的事情。 Android操作系統會在創建它們要運行的上下文時銷燬並重新創建靜態類及其靜態變量。我還了解到(單方面)單類不能用於將數據從一個Activity保存到另一個。

您需要做的是將數據傳遞給其Intent Bundle中的新Activity,或將其保存在SharedPreference中。爲此使用回調接口是一個壞主意,因爲您希望操作前進到下一個活動,並且(如果需要)允許操作系統銷燬先前的活動。

當爲下一個活動創建Intent時,可以使用Intent.putExtra(...)方法添加要傳遞給新Activity的數據。在新的Activity中,您使用getIntent()。get * Datatype * Extra(..)方法來檢索數據。

+0

沒有是過渡到其他活動,我的AsyncTask返回對象列表,並在此我想要得到這個對象的計數,謝謝。 – overallduka

0

我明白了!

在我的AsyncTask我通過怎樣參數的TextView和的AsyncTask聲明如何WeakReference的,這一點:

public class DownloadFileAsyncTask extends AsyncTask<String,Void,String> { 
.. 
    private WeakReference list=null,count_text=null; // Views i update in my AsyncTask 
.. 

構造:

public DownloadFileAsyncTask(View v,Context contextt,View txt) { 
    list = new WeakReference(v); 
    count_text = new WeakReference(txt); 
    this.context = contextt; 
} 

和onPostExecute:

ListView l = (ListView) list.get(); 
    TextView t = (TextView) count_text.get(); 

    t.setText(customAdapter.getCount()+" objects found"); 

感謝所有在這次的幫助下,有時候會很好的離開這個錯誤並回來,新的想法會回來e,謝謝大家。