gpt4 book ai didi

java - 如何从 LoaderCallbacks 的 onLoadFinished 方法中显示 DialogFragment

转载 作者:太空狗 更新时间:2023-10-29 16:21:59 24 4
gpt4 key购买 nike

我在尝试从实现 LoaderCallbacks 接口(interface)的 Fragment 的 onLoadFinished 方法中显示 DialogFragment 时收到异常。基本上我使用 LoaderCallbacks 从休息服务获取一些数据,然后在 onLoadFinished 上我试图显示一个包含 ListVeiw 的自定义 DialogFragment 以允许用户进行选择。一切都很好,除非我尝试从 onLoadFinished 中启动对话框。我怎样才能做到这一点..这是解决问题的正确方法吗?

这是我正在尝试做的一个例子:

public class EventFragment extends Fragment implements LoaderCallbacks<someresponse> {

@Override
public void onLoadFinished(Loader<someresponse> arg0, someresponse data) {
//an exception is generated when trying to launch a dialog fragment from
//within the onLoadFinished
FragmentManager manager = getFragmentManager();
ListViewDialogFragment dialog = ListViewDialogFragment.newInstance(data);
dialog.show(manager, "event_list_dialog");

}
}

谢谢!

最佳答案

所以经过一些研究,我确定我的方法是不正确的。您永远不应尝试从 LoaderCallbacks 异步任务的 onLoadFinished 方法中启动新 fragment 。该框架试图阻止您这样做,因为实现 LoaderCallbacks 的当前正在运行的 fragment 或 Activity 的状态是不确定的,因此不能保证在异步任务完成时存在。

此外,试图将处理对话框状态和数据显示状态分离成两个单独的 fragment 有点违背android框架支持的MVC设计模式。也就是说,我的新方法包括动态更改实现 LoaderCallbacks 的 fragment 的 View 以隐藏或显示特定的线性布局,一种用于流程指示器,另一种用于数据显示。这种方法让我修改了现有的 fragment ,而不是启动一个效果很好的新 fragment 。

这里是讨论的链接,最终让我清楚了。

https://groups.google.com/forum/#!topic/android-developers/dXZZjhRjkMk/discussion

关于java - 如何从 LoaderCallbacks 的 onLoadFinished 方法中显示 DialogFragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12237739/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com