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

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

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

PlayerFragment = (PlayerFragment) mManager.findFragmentById(R.id.bottom_container);
playerFragment.onNotificationListener.updateUI();

2 ответов


Не бросайте его сначала.

Fragment f = mManager.findFragmentById(R.id.bottom_container);
if(f != null && f instanceof PlayerFragment) {
    PlayerFragment playerFragment = (PlayerFragment) f;
    playerFragment.onNotificationListener.updateUI();
}

Если это не работает, опубликуйте stacktrace с исключением, которое вы получаете.


литье null для ссылки не будет выдавать исключение, для примитива это будет.

использовать findFragmentById() или findFragmentByTag() чтобы получить ссылку и проверить, если его null, если нет, проверьте ссылку isAdded() или isVisible().

PlayerFragment p = (PlayerFragment) mManager.findFragmentById(R.id.bottom_container);
if( p != null && p.isAdded()){
   p.onNotificationListener.updateUI();
}