"进度"对话框永远不会显示



我试图在单击列表项时显示进度对话框,但进度对话框从未显示。

令人惊讶的是,mProgressdialog.isShowing(( 是真的。如果有人遇到类似问题,请提供对问题的一些见解。

adapter.setOnItemClickListener(new Adapter.ListClickListener() {
@Override
public void onItemClick(int position, View v) {

//Some computations done.
if (ProjectsFragment.this.getActivity() != null) {
UniversalProgressDialog.showSimpleProgressDialog(getActivity(),"Loading","Loading...",false);
android.support.v4.app.FragmentManager fragmentManager = ProjectsFragment.this.getActivity().getSupportFragmentManager();
android.support.v4.app.FragmentTransaction ft = fragmentManager.beginTransaction();
ft.replace(R.id.sample_content_fragment, new AgendaFragment(), "AGENDA");
ft.commit();

}
}
}
}
});

UniversalProgressDialog的源代码:-

public class UniversalProgressDialog {
private static ProgressDialog mProgressDialog;

public static void showSimpleProgressDialog(Context context, String title,
String msg, boolean isCancelable) {
try {
if (mProgressDialog == null) {
mProgressDialog = ProgressDialog.show(context, title, msg);
mProgressDialog.setCancelable(false);
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
mProgressDialog.setIndeterminate(true);
mProgressDialog.setCanceledOnTouchOutside(false);
}
if(mProgressDialog.isShowing()){
mProgressDialog.dismiss();
}
if (!mProgressDialog.isShowing()) {
mProgressDialog.show();
}
} catch (IllegalArgumentException ie) {
ie.printStackTrace();
} catch (RuntimeException re) {
re.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void removeSimpleProgressDialog() {
try {
if (mProgressDialog != null) {
if (mProgressDialog.isShowing()) {
mProgressDialog.dismiss();
mProgressDialog = null;
}
}
} catch (IllegalArgumentException ie) {
ie.printStackTrace();
} catch (RuntimeException re) {
re.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}

}

我试过什么?

尝试将显示代码的进度对话框移动到

尝试将片段转换代码移动到另一个线程,如下所示:-

private class PerformFragmentTransition extends Thread {

public PerformFragmentTransition() {
}
@Override
public void run() {
android.support.v4.app.FragmentManager fragmentManager = ProjectsFragment.this.getActivity().getSupportFragmentManager();
android.support.v4.app.FragmentTransaction ft = fragmentManager.beginTransaction();
ft.replace(R.id.sample_content_fragment, new AgendaFragment(), "AGENDA");
ft.commit();
}
}

还尝试过:-

getActivity().runOnUiThread(new Runnable(){
public void run() {
UniversalProgressDialog.showSimpleProgressDialog(getActivity(),"Loading","Loading...",false);
}
});

还尝试过:-

根据其中一个表扬,我注释掉了片段转换代码,并显示了进度对话框。

如果这为如何解决问题提供了一些线索, 和更多信息:- 加载后,我将关闭下一个片段中的进度对话框。

mProgressDialog = ProgressDialog.show(context, title, msg);

将上面的代码替换为以下代码:

mProgressDialog = new ProgressDialog(context);
mProgressDialog.setTitle(title);
mProgressDialog.setMessage(msg);

问题是您在代码中创建对话框时显示对话框 在为其设置所需属性之前。并请删除尝试捕获块,这样您将获得实际发生的错误。并且可以在控制台中看到

最新更新