2011-12-02 23 views
-3

這個類有什麼問題?我progressdialog顯示,但在0%停留後消失,它從來沒有得到的百分比更新Android「publishProgress」錯誤

public class AsyncLogin extends AbstractAsync { 


    public AsyncLogin(Context context, AsyncCallback mAuthcallback) { 
     super(context, mAuthcallback); 
    } 

    @Override 
    protected HashMap<String, String> doInBackground(String... args) { 
     ... 
     publishProgress(50); 

     HashMap<String, String> result = html.download(); 
     publishProgress(75); 
     return result; 
    } 

    protected void onPreExecute() { 
     super.onPreExecute(); 

     this.progressDialog.setMessage(this.context.getString(R.string.please_wait_logging_in)); 
     this.progressDialog.show(); 


     publishProgress(25); 
    } 


    protected void onProgresUpdate(Integer... progress) 
    { 
     super.onProgressUpdate(progress); 
     Log.v("max", "set progress" + progress[0]); 
     this.progressDialog.setProgress(progress[0]); 
    } 

    protected void onPostExecute(HashMap map) { 
     ... 
    } 

} 


abstract class AbstractAsync extends AsyncTask <String, Integer, HashMap>{ 


    protected Context context; 
    protected ProgressDialog progressDialog; 
    protected AsyncCallback mAuthcallback; 

    public AbstractAsync(Context context, AsyncCallback mAuthcallback) { 
     this.context = context; 
     this.mAuthcallback = mAuthcallback; 

     progressDialog = new ProgressDialog(context); 
     progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
     progressDialog.setCancelable(false); 
     progressDialog.setProgress(0); 
    } 


    protected void onPreExecute() 
    { 
     super.onPreExecute(); 
     progressDialog.setMessage(context.getString(R.string.loadingSomething).toString()); 
     //dialog.show(); 
    } 

    protected void onProgresUpdate(Integer... progress) 
    { 
     super.onProgressUpdate(progress); 
     Log.v("max", "set progress" + progress[0]); 
     progressDialog.setProgress(progress[0]); 
    } 


    protected void onPostExecute(HashMap result) 
    { 
     super.onPostExecute(result); 
     progressDialog.dismiss(); 
    } 

} 

日誌從不寫什麼

+1

你想讓它做什麼?究竟發生了什麼?你做了什麼調試? – ethan

+0

什麼是抽象Async?它不是Android框架的一部分。 –

回答

3

任何機會,你的日誌級別比冗長低?

你的方法永遠不會達到「publishProgress」嗎?

此外,您不應該在onPreExecute中調用publishProgress。第一個是在運行你的doInBackground的backgorund線程上調用,第二個在啓動bg線程之前由asynctacsk機制調用。

你會發布AbstractAsync代碼以防萬一嗎?

編輯:

onProgresUpdate 

實際上是拼寫

onProgressUpdate 

免費小提示:用@Override批註,以確保你實際上是壓倒一切的東西

+0

udpated的東西,增加類 – max4ever