Java 加载URL时显示进度对话框

Java 加载URL时显示进度对话框,java,android,dialog,load,Java,Android,Dialog,Load,我的问题真的很奇怪。场景非常简单:只要我的活动正在加载URL内容,我就不想显示进度对话框 首先,我尝试单独显示ProgressDialog,内部没有任何特殊函数。效果很好。但当我添加一个加载URL的函数时,程序首先加载这些URL,然后显示进度条。这是我的密码: progDialog = new ProgressDialog(this); progDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); progDialog.setMessage

我的问题真的很奇怪。场景非常简单:只要我的活动正在加载URL内容,我就不想显示进度对话框

首先,我尝试单独显示ProgressDialog,内部没有任何特殊函数。效果很好。但当我添加一个加载URL的函数时,程序首先加载这些URL,然后显示进度条。这是我的密码:

progDialog = new ProgressDialog(this);
progDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progDialog.setMessage("Logging in ...");
progDialog.show();

client = new GameClient(context, universe, username, password);
client.login();

progDialog.dismiss();
没什么特别的。但出于某种原因,活动首先创建“登录部分”,然后尝试显示对话框,但无论如何它都不会显示


你能给我一些提示来解决这个问题吗

您需要在单独的线程中运行登录,这样它就不会阻塞UI线程,如下所示

...
progDialog.show();

new Thread(new Runnable() {
    @Override
    public void run() {
        client = new GameClient(context, universe, username, password);
        client.login();

        progDialog.dismiss();
    }
}).start();

或者使用一个。请参见使用ProgressDialog类来显示它

/*****************************************
 * AsyncTask Class to Parse and Display
 ******************************************/
class AsyncTaskClassName extends AsyncTask<Void,Void, Void>{
    ProgressDialog progressDialog = null;

    /* ***********************************
     * Pre-Execute Method 
     * ********************************** */
    @Override
    protected void onPreExecute() {
        progressDialog = util.getProgressDialog(ActivityClassName.this, "Please wait...", "Parsing List...    ");
           //ActivityClassName -> The Name of the Activity Class you want to show ProgressDialog
        // progressDialog.hide();
        progressDialog.show();

        /* Do your Pre-Execute Configuration */
    }

    /* ***********************************
     * Execute Method 
     * ********************************** */
    @Override
    protected Void doInBackground(Void... arg0) {
        /* Do yourxec Task ( Load from URL) and return value */
        return null;
    }

    /* ***********************************
     * Post-Execute Method 
     * ********************************** */
    @Override
    protected void onPostExecute(Void result) {
        progressDialog.dismiss();

                    /* Do your Post -Execute Tasks */
    }
/*****************************************
*要分析和显示的AsyncTask类
******************************************/
类AsyncTaskClassName扩展了AsyncTask{
ProgressDialog=null;
/* ***********************************
*预执行方法
* ********************************** */
@凌驾
受保护的void onPreExecute(){
progressDialog=util.getProgressDialog(ActivityClassName.this,“请稍候…”,“解析列表…”);
//ActivityClassName->要在ProgressDialog中显示的活动类的名称
//progressDialog.hide();
progressDialog.show();
/*是否执行预执行配置*/
}
/* ***********************************
*执行方法
* ********************************** */
@凌驾
受保护的Void doInBackground(Void…arg0){
/*执行XEC任务(从URL加载)并返回值*/
返回null;
}
/* ***********************************
*后执行方法
* ********************************** */
@凌驾
受保护的void onPostExecute(void结果){
progressDialog.disclose();
/*执行后任务吗*/
}

Hm,谢谢,我已经有了这个想法,但我把它编错了。谢谢:)这个问题很老了,但你还是尽了最大努力,谢谢:)这肯定会解决问题的。