【发布时间】:2013-11-05 13:09:34
【问题描述】:
我正在尝试实现nested fragments,但我遇到了问题。
当我在一个ChildFragmentManager 和一个fragment 中添加两个不同的fragments 和两个不同的tags(“tag1”、“tag2”)时,一切似乎都正常。
但是当我在这些tags 上调用getChildFragmentManager().findFragmentByTag 时,只返回第一个fragment。我在第二个收到null。
要添加fragments 我使用:
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,我必须从Parent Fragment 手动调用nested fragment 的onActivityResult。因此,在 Parent 的 onActivityResult 中,我正在尝试获取我需要的 nested fragment 并调用它的 onActivityResult。
编辑 3:
如我所说,我有Custom View,负责拍照和炫耀。我在父 Fragment Layout 中有 3 个 Custom Views。当用户点击其中任何一个时,它应该拍照并预览。如果我只将 1 个 custom view 添加到父 fragment 它可以工作,但是当我使用其中 3 个时,click event 对所有这些都有效,这意味着相机 fragment 已连接但我无法调用onActivityResult 在其他两个上,因为我无法得到fragment 那个startedActivityForResult,它是null。所以在我看来,问题应该在于将nested fragments 添加到transaction 但我找不到。
【问题讨论】:
-
你能把代码贴在你调用 findFragmentByTag 的地方吗?
-
您调用了 transaction.add() 两次,同时添加了两次完全相同的片段。那么为什么不创建 2 个单独的片段呢?否则,您的第二个选择是使用 transaction.replace() 交换片段。
标签: android android-fragments android-activity fragment android-fragmentactivity