我有一个进度对话框,我试图在用户点击按钮启动新活动时显示该对话框。微调器应显示在当前页面上,直到出现其他活动。 (活动有时需要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);
}...
答案 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