Если я добавляю фрагменты моей деятельности, как это:.getSupportFragmentManager() findFragmentByTag непредсказуемое поведение
fragment_tags = new ArrayList<String>();
fragment_tags.add("user_fragment");
fragment_tags.add("memorial_fragment");
UserFragment user = new UserFragment();
MemorialFragment memorial = new MemorialFragment();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.add(R.id.content_frame, user, fragment_tags.get(0));
ft.add(R.id.content_frame, memorial, fragment_tags.get(1));
ft.commit();
, а затем через некоторое время я пытаюсь получить эти фрагменты, как это:
List<Fragment> frg = getSupportFragmentManager().getFragments();
Fragment fragUser = getSupportFragmentManager().findFragmentByTag(
"user_fragment");
Fragment fragUserID = getSupportFragmentManager().findFragmentById(
R.id.user_fragment_id);
Log.d("MV", "fragments size:" + (frg == null ? " null" : frg.size()));
Log.d всегда возвращает размер 2, но fragUser иногда является нулевым, а иногда это фрагмент, который я вставлял в транзакцию.
Что более интересно то, что этот код:
try {
Log.d("MV", "0:" + frg.get(0).toString());
Log.d("MV", "1:" + frg.get(1).toString());
} catch (NullPointerException e) {
Log.d("MV", "null caught");
}
иногда будет работать для обоих фрагментов, а иногда и просто для первого и если я smething так:
if(frg.get(0) == fragUser)
будет иногда оценивается как истина, но не часто. Я действительно не понимаю этого поведения, но мне нужно реализовать переключение между несколькими фрагментами, поэтому мне нужно получить ссылку на точный фрагмент. Кто-нибудь? Я пытаюсь решить это в течение 6 часов, и я действительно не понимаю, как это сделать. Спасибо
Ну, чтобы ответить на одну часть ... ** "if (frg.get (0) == fragUser)" ** ... вы не можете сравнить объекты с помощью '=='. Вам нужно использовать 'if (frg.get (0).equals (fragUser)) ' – Squonk
Сквонк на самом деле это мое намерение. Мне все равно, если объекты имеют одинаковые атрибуты, но если их ссылки одинаковы, они должны быть теми же объектами. Я хочу тот же фрагмент. – vanomart