Как проверить, существует ли фрагмент?

Я пытаюсь поговорить с фрагментом из активности, но я не уверен, что фрагмент виден или нет. Если фрагмент не существует, я даже не могу выполнить нулевую проверку, поскольку он выдает исключение из-за кастинга.

Как проверить, существует ли фрагмент?

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();
}