У меня есть один фрагмент (MainFragment) с кнопкой и видовой пейджер внутри с еще 2 фрагментами (HeaderFragment и ItemsFragment). Фрагменты, которые помещаются в FragmentManager, автоматически генерируют тег. Я могу извлечь этот тег и использовать его, чтобы найти HeaderFragment или Items Fragment по тегу. Но они всегда возвращают ноль.
Это мой MainFragment
public class MainFragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
((MainActivity)getActivity()).getSupportActionBar().setTitle("MAIN FRAGMENT");
ViewGroup root = (ViewGroup) inflater.inflate(R.layout.fragment_visitation_so_form, container, false);
((MainActivity)getActivity()).drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
((MainActivity)getActivity()).toggle.setDrawerIndicatorEnabled(false);
((MainActivity)getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
viewPager = (ViewPager) root.findViewById(R.id.view_pager);
setupViewPager(viewPager);
tabLayout = (TabLayout) root.findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
btnAdd = root.findViewById(R.id.btn_add);
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getActivity(), "android:switcher:" + R.id.view_pager + ":0", Toast.LENGTH_LONG).show(); // this shows android:switcher:2131296595:0
Fragment fragment = getActivity().getSupportFragmentManager().findFragmentByTag("android:switcher:" + R.id.view_pager + ":0");
if (null != fragment) {
Log.e("success", "success");
}
}
});
return root;
}
private void setupViewPager(ViewPager viewPager) {
SectionsPageAdapter adapter = new SectionsPageAdapter(getChildFragmentManager(), BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
adapter.addFragment(new VisitationSOHeaderFragment(), "Header");
adapter.addFragment(new VisitationSOItemFragment(), "Barang");
adapter.addBundle(bundle);
viewPager.setAdapter(adapter);
}
}
И это мой HeaderFragment
public class HeaderFragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
ViewGroup root = (ViewGroup) inflater.inflate(R.layout.fragment_visitation_so_header, container, false);
Toast.makeText(getActivity(), this.getTag(), Toast.LENGTH_LONG).show(); // this also shows android:switcher:2131296595:0
return root;
}
Несмотря на правильное имя тега, но я никогда не получаю до Log.e("success", "success")
. Это почему? Любая помощь будет оценена.