替换不调用onAttach,onCreate,onCreateView等活动中的片段

Cas*_*ldi 7 java android fragment fragmentmanager

所以我在这里有这段代码,我正在创建一个新的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();
Run Code Online (Sandbox Code Playgroud)

非常感谢任何可以使用第二行未使用的帮助.

Lar*_*fer 4

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

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();
Run Code Online (Sandbox Code Playgroud)

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