2011-12-02 45 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