Как проверить, существует ли фрагмент?
Я пытаюсь поговорить с фрагментом из активности, но я не уверен, что фрагмент виден или нет. Если фрагмент не существует, я даже не могу выполнить нулевую проверку, поскольку он выдает исключение из-за кастинга.
Как проверить, существует ли фрагмент?
PlayerFragment = (PlayerFragment) mManager.findFragmentById(R.id.bottom_container);
playerFragment.onNotificationListener.updateUI();
Ответы
Ответ 1
Не бросайте его сначала.
Fragment f = mManager.findFragmentById(R.id.bottom_container);
if(f != null && f instanceof PlayerFragment) {
PlayerFragment playerFragment = (PlayerFragment) f;
playerFragment.onNotificationListener.updateUI();
}
Если это не работает, запустите stacktrace с исключением, которое вы получаете.
Ответ 2
Приведение null
в ссылку не будет вызывать исключение, для примитива это будет.
Используйте findFragmentById()
или findFragmentByTag()
, чтобы получить ссылку и проверьте, не указывает ли ее нуль, если нет, ссылку isAdded()
или isVisible()
.
PlayerFragment p = (PlayerFragment) mManager.findFragmentById(R.id.bottom_container);
if( p != null && p.isAdded()){
p.onNotificationListener.updateUI();
}