显示对话框,关于片段工作
Show Dialog, on Fragment working
我有一个片段,在它的 onStart() 中,我进行了很多 BD 查询,这些查询持续了 15 秒。我想显示一个带有 "loading circle" 的进度对话框。
我的应用程序只有一个 Activity,Main。这个,开始第一个片段,从这里,我跳到另一个片段,下一个片段也是如此。为了从一个片段传递到另一个片段,我使用下一个静态方法。
public static startFragment(FragmentTransaction FT, Fragment newFragmentToOpen)
{
FT.replace(R.id.Container, newFragmentToOpen);
FT.addToBackStack(null);
FT.commit();
}
我尝试在启动进度对话框的方法中创建一个线程,但没有成功。我尝试在 Fragment 的 OnCreate() 方法上启动对话框,但也没有用。
我能做什么?
谢谢。
(编辑)
我试图在片段内的 onCreateView() 和 onViewCreated() 处启动进度对话框。它没有用,但是如果我逐步调试,我会看到当流程转到 onStart() 时(使用 DB 持续 10 秒),ProgressDialog 停止。
通过这个测试,我明白 ProgressDialog 是正确显示的,但是当我转到 onStart() 时,它就消失了。
(编辑)
问题是,在片段的 onStart() 中,我正在处理视图,添加元素。我需要,当这些元素正在加载时,会显示一个对话框,因为现在,对于用户来说,应用程序似乎在加载时停止了。我需要这样的东西:
public static startFragment(FragmentTransaction FT, Fragment newFragmentToOpen)
{
startProgressDialog();
FT.replace(R.id.container, newFragmentToOpen);
FT.addToBackStack(null);
FT.commit();
stopProgressDialog();
}
但这不起作用,因为当片段视图完全加载时,进度对话框才开始。
您应该尝试在 onCreateView()
中显示对话框,因为这是 UI 组件在 Fragment
中显示的位置
我找到了解决方案。
- 创建 STATIC vars.These 将包含我将在片段的 OnStart() 中使用的信息。
- 在进行片段转换之前,启动进度对话框。
- 启动进度对话框后,启动线程。
- (进入线程)将信息加载到静态变量中。
- (进入线程)加载所有信息后,关闭进度对话框。
- (INTO THE THREAD) 调用要加载的片段。
- 线程结束。
- 在 OnStart() 中进入 de Fragment,从 STATIC 变量中获取信息。
我有一个片段,在它的 onStart() 中,我进行了很多 BD 查询,这些查询持续了 15 秒。我想显示一个带有 "loading circle" 的进度对话框。 我的应用程序只有一个 Activity,Main。这个,开始第一个片段,从这里,我跳到另一个片段,下一个片段也是如此。为了从一个片段传递到另一个片段,我使用下一个静态方法。
public static startFragment(FragmentTransaction FT, Fragment newFragmentToOpen)
{
FT.replace(R.id.Container, newFragmentToOpen);
FT.addToBackStack(null);
FT.commit();
}
我尝试在启动进度对话框的方法中创建一个线程,但没有成功。我尝试在 Fragment 的 OnCreate() 方法上启动对话框,但也没有用。
我能做什么?
谢谢。
(编辑) 我试图在片段内的 onCreateView() 和 onViewCreated() 处启动进度对话框。它没有用,但是如果我逐步调试,我会看到当流程转到 onStart() 时(使用 DB 持续 10 秒),ProgressDialog 停止。
通过这个测试,我明白 ProgressDialog 是正确显示的,但是当我转到 onStart() 时,它就消失了。
(编辑)
问题是,在片段的 onStart() 中,我正在处理视图,添加元素。我需要,当这些元素正在加载时,会显示一个对话框,因为现在,对于用户来说,应用程序似乎在加载时停止了。我需要这样的东西:
public static startFragment(FragmentTransaction FT, Fragment newFragmentToOpen)
{
startProgressDialog();
FT.replace(R.id.container, newFragmentToOpen);
FT.addToBackStack(null);
FT.commit();
stopProgressDialog();
}
但这不起作用,因为当片段视图完全加载时,进度对话框才开始。
您应该尝试在 onCreateView()
中显示对话框,因为这是 UI 组件在 Fragment
我找到了解决方案。
- 创建 STATIC vars.These 将包含我将在片段的 OnStart() 中使用的信息。
- 在进行片段转换之前,启动进度对话框。
- 启动进度对话框后,启动线程。
- (进入线程)将信息加载到静态变量中。
- (进入线程)加载所有信息后,关闭进度对话框。
- (INTO THE THREAD) 调用要加载的片段。
- 线程结束。
- 在 OnStart() 中进入 de Fragment,从 STATIC 变量中获取信息。