gpt4 book ai didi

java - 替换不调用 onAttach、onCreate、onCreateView 等的 Activity 中的 fragment

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:51:59 25 4
gpt4 key购买 nike

所以我这里有这段代码,我正在创建一个新的 fragment 并将其替换为另一个 fragment 。这很好用。但是我注意到在第一行调用了构造函数,但是 onAttach()onCreate() 等没有被调用。如果我要取消注释第二行,它将无法工作,因为 updateItem(URL) 需要一个在 onCreate() 函数中启动的 webView。

DetailViewFragment detailFragment = new DetailViewFragment();
//detailFragment.updateItem(URL);
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.displayList, detailFragment);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.addToBackStack(null);
ft.commit();

如果能在第二行未注释的情况下提供任何帮助,我们将不胜感激。

最佳答案

onAttach()onCreate() 等在 FragmentManager 实际提交更改之前不会被调用。因此,在转换调用 commit() 之后的某个时间。如果您需要从一开始就将 URL 传递给 Fragment,请在 调用 commit() 之前将其添加到 fragment 的参数包中。然后,您将能够在 onCreate() 或其他生命周期方法中访问该 URL。所以你会想要这样的东西:

DetailViewFragment detailFragment = new DetailViewFragment();
Bundle args = new Bundle();
args.putString(DetailViewFragment.INIT_URL, URL);
detailFragment.setArguments(args);
ft.replace(R.id.displayList, detailFragment);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.addToBackStack(null);
ft.commit();

现在,在您的 onCreate() 中,您可以调用 getArguments() 来获取包并检索您的 Activity 传递的 URL。

关于java - 替换不调用 onAttach、onCreate、onCreateView 等的 Activity 中的 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24956034/

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