gpt4 book ai didi

android - fragment 中的数据处理

转载 作者:行者123 更新时间:2023-11-29 14:15:04 25 4
gpt4 key购买 nike

我目前正在开发 Android 应用程序。因为我想支持平板电脑和手机,所以我决定使用 fragment 。但现在出现了一个问题,与其说是具体错误,不如说是架构问题。

哪个组件负责加载和保存数据:周围的 Activity 还是 fragment 本身? android 开发者资源中的所有示例都使用 fragment 中的数据加载。

我的申请(简化版):

  • ItemActivity(显示 ItemListFragment)
  • EditItemActivity(显示 EditItemFragment)
  • CreateItemActivity(显示 EditItemFragment)
  • ItemListFragment(显示来自本地 SqliteDb 的项目列表)
  • EditItemFragment(允许编辑项目,从中加载和保存它数据库)

但我想我现在被困住了。所以我的问题是关于最佳实践的一般性问题。

  1. 我想在 fragment 中设置参数,但这只在动态添加 fragment 到 Activity 时有效。那么在使用修复 fragment 时如何将参数从 Activity 传递到 fragment ?
  2. 在生命周期中创建 Activity 时,我可以访问我的数据库。但是我必须决定是否应该在生命周期之前加载数据。 onCreate 和 onCreateView 以及 savedInstanceState 决定我是应该从包中恢复还是稍后从数据库加载。那么我应该在 onCreate 中存储是否从数据库加载或者是否有更好的方法?

最佳答案

FOA 我建议您只使用 fragment 而不是智能手机的选项卡和 Activity fragment 。我之所以这样说:

My application (simplified):

ItemActivity (shows ItemListFragment)
EditItemActivity (shows EditItemFragment)
CreateItemActivity (shows EditItemFragment)
ItemListFragment (shows a list of items from local SqliteDb)
EditItemFragment (allows to edit an item, loads and saves it from SqliteDb)

我想前三个也必须是 fragment 。其次,您可以使用任何您想要的数据容器 - Bundle with args、SharedPreferences 甚至父 Activity 中的一些公共(public)字段。
那么在使用修复 fragment 时如何将参数从 Activity 传递到 fragment ?您可以通过静态方法实例化您的 fragment ,例如:

private int photoRes;
public static ViewPagerDetailFragment newInstance(int photoRes) {
final ViewPagerDetailFragment f = new ViewPagerDetailFragment();
f.photoRes = photoRes;
return f;
}

或者使用 Bundle

Bundle args = new Bundle();
args.putInt(KEY,value);
Fragment fragment = new Fragment();
fragment.setArguments(args);

至于 2 - 我想最好先向用户显示 UI 然后再加载数据,以其他方式(在 onCreate 中加载数据等)它可能看起来像 ANR。如果数据量很低,那么它可以加载到 onCreate 或任何你想要的地方。如果数量很大,最好使用加载器从数据库加载数据

关于android - fragment 中的数据处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21682513/

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