gpt4 book ai didi

java - 用当前 fragment 中的另一个 fragment 替换当前 fragment

转载 作者:行者123 更新时间:2023-11-30 10:34:03 31 4
gpt4 key购买 nike

我有一个名为

的 Activity
MainActivity

我在容器 R.id.mainContainer 中添加了 fragment “BenefitFragment”。

在 BenefitFragment 布局中,我有另一个容器 R.id.benefitContainer。我正在添加一个嵌套 fragment 作为

getChildFragmentManager().beginTransaction()
.add(R.id.benefitContainer, new ConfirmPinFragment())
.setCustomAnimations(R.anim.slide_in_left, R.anim.do_nothing)
.addToBackStack("benefit")
.commit();

在我的 ConfirmPinFragment 中,经过一些处理后我想删除此 ConfirmPinFragment 并将其替换为另一个 Fragment 让我们说 TestFragment 并且 TestFragment 可以用另一个 fragment 替换自己等等。

这是我在 ConfirmPinFragment 中尝试的内容

CorporateFragment fragment = new CorporateFragment();
getFragmentManager().beginTransaction()
.addToBackStack("benefit")
.hide(ConfirmPinFragment.this)
.add(android.R.id.content, fragment)
.setCustomAnimations(R.anim.slide_in_left, R.anim.do_nothing)
.commit();

但是我收到错误 android.R.id.content not found。我想从其中替换 fragment 并用另一个 fragment 替换,我该怎么做。

最佳答案

我看到 BenefitFragment 将成为 ConfirmPinFragmentCorporateFragment 的父级 Fragment

因此将 R.id.benefitContainer 作为您的 fragment 的容器传递,您的 fragment 将在其中被替换。但是你需要先解析那个id。为此,您需要使用 getParentFragment()

试着在你的 ConfirmPinFragment 中写这个。

Fragment mF = getParentFragment();
// double check
if (mF instanceof BenefitFragment) {
getFragmentManager().beginTransaction()
.add(((BenefitFragment)getParentFragment()).getView().findViewById(R.id.benefitContainer).getId()
, new CorporateFragment())
.setCustomAnimations(R.anim.slide_in_left, R.anim.do_nothing)
.addToBackStack("benefit")
.commit();
}

关于java - 用当前 fragment 中的另一个 fragment 替换当前 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41887816/

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