Android DialogFragment进度条

Jon*_*Jon 32 android android-progressbar android-fragments

我到处搜索,我找不到解决这个问题的方法.

基本上我有一个登录屏幕,我正在尝试获取进度微调器,以便在登录到服务器(通过线程)时显示,然后在登录成功后将其关闭.它必须在改变方向时工作.

我正在使用DialogFragmentAndroid兼容包来创建一个进度条(找不到任何文档,仅用于基本\ alert对话框),因为showDialog()现在已弃用.现在我只显示一个自定义消息框作为登录微调器.

综上所述:

  • 如何设置Progress微调器DialogFragment.
  • 如何在方向更改后在另一个线程中将其解除.

Phi*_*art 60

要显示进度微调器,只需在对话框片段中覆盖DialogFragment.onCreateDialog(),如下所示(无需重写onCreateView()):

@Override
public Dialog onCreateDialog(final Bundle savedInstanceState) {
    final ProgressDialog dialog = new ProgressDialog(getActivity());
    //
    dialog.setTitle(R.string.login_title);
    dialog.setMessage(getString(R.string.login_message));
    dialog.setIndeterminate(true);
    dialog.setCancelable(false);
    // etc...
    return dialog;
}
Run Code Online (Sandbox Code Playgroud)

至于从其他地方解雇该对话框片段,你需要保持FragmentManager(从你的下一个FragmentActivity或内部Fragment)并调用popBackStack()它(如果你在此期间没有做任何其他片段事务).

如果进度对话框片段和下一个活动之间有更多的步骤/片段事务处理,您可能需要使用其他popBackStack(...)方法之一来获取ID或标记,以便将所有内容从堆栈中弹出到进度对话框片段.

  • 我想补充一点,'DialogFragment`有一个'dismiss`方法,可以用来支持弹出后栈.只需`findFragmentByTag`,强制转换为`DialogFragment`和`dismiss()` (17认同)

LOG*_*TAG 20

我知道这是一个老问题,但我想为此分享更好的解决方案

根据Android Development Protip:

"停止使用ProgressDialog,内联指标是你的朋友"

罗马努里克:

在此输入图像描述

这一个很快.停止使用ProgressDialog和其他模态加载指示器.它们非常中断和烦人,尤其是在以下情况下:

  • 每次切换标签时都会看到一个.

  • 你不能退出他们.

  • 他们说"请稍等".不,谢谢,我宁愿卸载.

要么显示与您的内容内联的加载指示符(例如 http://developer.android.com/training/animation/crossfade.html),要么更好,在后台加载少量数据,以便最小化甚至显示装载指标.

更多关于设计指南中的进展和活动.