Ask*_* B. 15 android design-patterns android-fragments
我有一个活动,我动态地替换片段:
private void goToFragment(Fragment newFragment, String tag) {
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.fragment_container, newFragment, tag);
ft.addToBackStack(null);
ft.commit();
}
Run Code Online (Sandbox Code Playgroud)
现在,我想访问片段内的视图,这样我就可以在调用后立即将数据(我已存储在我的活动中)放入其中goToFragment.
问题是,在onCreateView完全呈现片段之前不会调用片段,至少根据我的理解.
我知道覆盖onAttach(Activity activity)片段是一种方法,但我必须将它专门用于我的活动 - 我只是想避免这种情况,因为我认为片段依赖于特定活动是不好的做法.
据我所知,Fragment没有任何听众(作为主题)实施.
所以我想我必须创建自己的监听器(使用Observer模式使片段成为主题,活动成为观察者),然后在完成onCreateView或调用时调用它onAttach,然后最终使用数据调用片段需要设定.但是,我需要为几个片段执行此操作,因此我必须为每个片段创建一个侦听器,我再次认为这是不好的.
有没有更好/更简单的方法来做到这一点?
And*_*kov 37
FragmentTransaction调用后不会立即应用commit().您可以手动强制更新:
...
mFragmentManager.executePendingTransactions();
Run Code Online (Sandbox Code Playgroud)
AFAIK事件回调的目的是Fragment在其通常的生命周期之外进行自定义通信.