Re: [問題] asyncTask 結果返回的問題

看板AndroidDev作者 (猩爺)時間12年前 (2013/06/04 21:13), 編輯推噓5(5011)
留言16則, 5人參與, 最新討論串3/3 (看更多)
感謝您的回答 我是比較想嘗試用方法一的方式 但是 createTab 中會需要用到 getSupportActionBar() 我之前用都是在類別直接 extends SherlockActivity 就可以使用了 但是 MyAsyncTask 已經 extends AsyncTask 了所以不知道要怎麼讓 getSupporActionBar()使用 對不起我沒有學過 JAVA,物件導向的觀念可能不是很熟 ※ 引述《MosilW (Mosil)》之銘言: : 從您的內容來看,AsyncTask 是另外一個 class : 這樣一來可以分成兩個方向 : 一、 : 把後續要做的動作跟所需要的物件一併傳入 AsyncTask : 讓 AsyncTask 得以在 onPostExecute() 中執行 : 二、繼承 : AsyncTask class 裡的 doInBackground() 寫好 : 在 class A 中再寫一個 private class extend this AsyncTask : 然後把 onPostExecute() 寫在這裡 : 這樣就可以解掉您的問題了 : ※ 引述《t3825288 (猩爺)》之銘言: : : 請問要如何得知 AsyncTask 的工作已經做完了呢? : : 因為我想在 class A 中 呼叫 AsyncTask 抓取網頁 : : 然後等結果擷取完後解析網頁裡面的頁數資訊 : : 再利用 actionbarsherlock 來 addTab() : : 網路上的方法有些是把 AsyncTask 的 class 寫在 class A 裡面 : : 但是我希望把他們兩個分開寫在不同的 .java 檔 : : 也有人是把參數傳進去建構子,然後在 AsyncTask 那邊做處理 : : 但是我好像沒辦法在 AsyncTask 中使用 actionbarsherlcok 的相關函式 : : 於是我想到的辦法是在 class A 中建構一個函式 createTab() 用來 addTab() : : 然後在 onPostExecute() 中呼叫這個 createTab() : : 但是執行後還是會當機 : : 在網路上查到另外一個 AsyncTask.getStatus() 的東西 : : 不過還是不知道如何應用在上面 : : 這幾天一直查都查不到方法 : : 實在是招窮了,懇求板上的大大們救救小弟吧... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.216.96

06/04 21:34, , 1F
不知道你為什麼不考慮用inner class而一定要分兩個.java?
06/04 21:34, 1F

06/04 22:24, , 2F
推樓上!在class A裡面直接用inner class 繼承AsyncTask
06/04 22:24, 2F

06/04 23:31, , 3F
因為我想在class B,class C 都用的到 AsyncTask
06/04 23:31, 3F

06/04 23:31, , 4F
所以想說把他額外寫出來這樣就可以都用到了
06/04 23:31, 4F

06/05 00:13, , 5F
可以參考這個作法
06/05 00:13, 5F

06/05 00:13, , 6F
忘了貼網址 http://goo.gl/CFS5n
06/05 00:13, 6F

06/05 01:29, , 7F
樓上給的連結裡用的方式很好
06/05 01:29, 7F

06/05 01:31, , 8F
我之前偷懶都是在asynctask裡用一個變數放外面給的runnab
06/05 01:31, 8F

06/05 01:31, , 9F
le, 然後在onPost裡叫THREAD_POOL_EXECUTOR執行該runnabl
06/05 01:31, 9F

06/05 01:31, , 10F
e
06/05 01:31, 10F

06/05 01:34, , 11F
然後runnable裡面跟UI相關的部份再用runOnUiThread, 或se
06/05 01:34, 11F

06/05 01:34, , 12F
ndMessage給使用main looper的handler...
06/05 01:34, 12F

06/05 07:35, , 13F
其實用方法二可以保留很多彈性
06/05 07:35, 13F

06/05 07:36, , 14F
若是您希望用方法一,那您可能要了解那個函式得怎麼用
06/05 07:36, 14F

06/05 07:37, , 15F
像這邊,您可以傳入activity進去
06/05 07:37, 15F

06/05 07:38, , 16F
然後用activity.getSupportActionBar()
06/05 07:38, 16F
文章代碼(AID): #1HhUVZKK (AndroidDev)
文章代碼(AID): #1HhUVZKK (AndroidDev)