[英]Get Count of Async Task on Static Method always return 0
勒芒,在這里大約2個小時是一件很簡單的事情,但是從不返回對象的數量。
我將解釋白色代碼:
DownloadFileAsyncTask.java(是我的異步任務)
在OnPostExecute我做到這一點:
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;
...
問題是:當我在onCreate
獲取ResultActivity.rec_count
,始終返回0,但是我將日志顯示為以前的ResultActivity.rec_count
:
Log.i("solteiroApp","object count is "+customAdapter.getCount());
這將正確返回計數。
我不知道這是因為,如果有人有Sugestio來獲取此計數,請告訴我,我在這里的小時數嘗試返回此計數以顯示在活動中,但如果我再次使用AsyncTask返回,則沒有時間返回我執行的值以前的值,請有人幫我。
1,是否在調用OnPostExecute之前在onCreate中獲得rec_count? 檢查您的代碼2,如果沒有,在rec_count之前添加volatile:public static volatile int rec_count,請嘗試一下,希望對您有所幫助。
您無法做您想做的事。 當Android OS(重新)創建要在其中運行的Context時,Android操作系統將銷毀並重新創建靜態類及其靜態變量。我還(很難地)了解到,單例類不能用於將一個Activity中的數據保存到另一個。
您需要做的是將數據傳遞到其“意圖捆綁包”中的新活動,或者將其保存在SharedPreference中。 為此使用回調接口是個壞主意,因為您希望操作前進到下一個活動,並且(如果需要)允許操作系統銷毀上一個活動。
為下一個活動創建Intent時,可以使用Intent.putExtra(...)方法添加數據以傳遞給新的Activity。 在新的Activity中,使用getIntent()。get * Datatype * Extra(..)方法檢索數據。
我知道了 !
在我的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");
謝謝大家的幫助,有時是個好消息,有時會出錯,然后回來,新的想法回來了,謝謝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.