显示进度对话框,直到加载新活动

时间:2011-11-30 19:56:22

标签: java android progressdialog

我有一个进度对话框,我试图在用户点击按钮启动新活动时显示该对话框。微调器应显示在当前页面上,直到出现其他活动。 (活动有时需要4-5秒才能启动,没有微调器,它只显示一个看起来已冻结的按下按钮)

这就是我所拥有的,只有当我删除hideProgressDialog();时它才有效,但是当我回到之前的活动时,旋转器仍然会在那里。显然。

我做错了什么?

进度对话:

    public void showProgressDialog(Context context) {
    if(this.progressDialog != null) {
        this.progressDialog.dismiss();
        this.progressDialog = null;
    }
    this.progressDialog = ProgressDialog.show(context, "", "Chargement en cours, veuillez patienter");
}    

public void hideProgressDialog() {
    if(this.progressDialog != null) {
        this.progressDialog.dismiss();
        this.progressDialog = null;
    }
}

功能:

public void startActivity(Context context, Class<? extends Activity> activityClass) {
    try {
        showProgressDialog(context);
            Intent intent = new Intent(this, activityClass);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);         
            startActivity(intent);    
            hideProgressDialog();
    }
    catch(Throwable e) {
        e.printStackTrace();
    }
}  

单击按钮的示例,此处调用函数以显示微调器:

    @Override
public void onClick(View view) {
    if(view.getId() == R.id.changeBannerButton) {
        getBaseApplication().startActivity(this, BannerListActivity.class);
    }...

3 个答案:

答案 0 :(得分:6)

hideProgressDialog()方法中调用onResume()。这样,如果用户按下后退按钮,则会调用onResume()方法并立即隐藏进度对话框。

答案 1 :(得分:2)

首先,您应该将新的DialogFragment类与FragmentManager一起使用。因为showdialog()已从API级别8弃用

接下来,您应该使用 showdialog removeialog 来添加和删除对话框。

您应该使用 onCreateDialog 来处理对话框和操作。就像开始一个新的线程来运行时,在显示progressdialog时就可以了。

答案 2 :(得分:0)

尝试在活动开始时在单独的线程中加载数据。但在该过程开始之前显示进度对话框。现在,一旦完成该过程,使用runOnUI隐藏进度对话框..

Indicate the user that data is being loading

http://www.helloandroid.com/tutorials/using-threads-and-progressdialog

和此:

Android - using runOnUiThread to do UI changes from a thread