gpt4 book ai didi

Android 嵌套 fragment

转载 作者:行者123 更新时间:2023-11-29 17:55:27 26 4
gpt4 key购买 nike

我正在尝试实现嵌套 fragment ,但我遇到了问题。

当我在一个 ChildFragmentManager 中添加两个不同的 fragments 和两个不同的 tags ("tag1", "tag2") >fragment,似乎一切正常。

但是当我在这些 tags 上调用 getChildFragmentManager().findFragmentByTag 时,只返回第一个 fragment。我在第二个上得到了 null

要添加 fragment ,我使用:

PersonsImageFragment imf = new PersonsImageFragment(imgPreview, 1);
android.support.v4.app.FragmentTransaction transaction = frag.getChildFragmentManager().beginTransaction();
transaction.add(R.id.frame, imf, "tag1")
.addToBackStack(tagName)
.commit();
imf = new PersonsImageFragment(imgPreview, 2);
transaction.add(R.id.frame2, imf, "tag2")
.addToBackStack(tagName)
.commit();

我错过了什么吗?

编辑:

    f = getChildFragmentManager().findFragmentByTag("tag1");
// f.onActivityResult(requestCode, resultCode, data);
f = getChildFragmentManager().findFragmentByTag("tag2");
// f.onActivityResult(requestCode, resultCode, data);

编辑 2:

我想做的是,我有 ViewPager 并且在其中一个 fragments 中有 custom view,即负责拍照并将其显示在 ImageView 中。所以 nested fragment 正在调用 camera intent 并在 onActivityResult 中更新 ImageView。如您所知,Nested Fragments 中存在一个bug,我必须手动调用 nested fragmentonActivityResult 父 fragment 。所以在 Parent 的 onActivityResult 中,我试图获取我需要的 nested fragment 并调用它的 onActivityResult

编辑 3:

正如我所说,我有 Custom View,它负责拍照和展示。我在父 Fragment Layout 中有 3 个 Custom Views。当用户点击其中任何一个时,它应该拍照并预览。如果我只添加 1 个 custom view 到父 fragment 它有效,但是当我使用其中的 3 个时,click 事件 对所有的有效它们,这意味着附加了相机 fragment 但我无法在其他两个上调用 onActivityResult 因为我无法获得 fragment startedActivityForResult,它是null。所以在我看来,问题应该在于将 nested fragments 添加到 transaction 但我找不到它。

最佳答案

我真的不能确定,因为源代码不是 100% 完整的,但我认为有几件事被混淆了。

例如,您为 fragment 和事务重复使用相同的 PersonsImageFragment。尝试这样的事情:

PersonsImageFragment frag1 = new PersonsImageFragment(imgPreview, 1);
android.support.v4.app.FragmentTransaction transaction = frag1.getChildFragmentManager().beginTransaction();
transaction.add(R.id.frame, frag1, "tag1")
.addToBackStack(tagName)
.commit();

PersonsImageFragment frag2 = new PersonsImageFragment(imgPreview, 2);
android.support.v4.app.FragmentTransaction transaction2 = frag2.getChildFragmentManager().beginTransaction();
transaction2.add(R.id.frame2, frag2, "tag2")
.addToBackStack(tagName)
.commit();

还没有尝试过,所以你可能需要稍微修改一下才能编译,但你明白了。让我知道这是否有效。

关于Android 嵌套 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19789770/

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