Как получить отображаемый фрагмент?

402
задан nbro 18 December 2018 в 13:33
поделиться

2 ответа

Вот решение Kotlin:

if ( this.getSupportFragmentManager().getBackStackEntryCount()>0 ) {
    var fgmt = this.getSupportFragmentManager().fragments[this.getSupportFragmentManager().getBackStackEntryCount()-1]
    if( fgmt is FgmtClassName ) {
        (fgmt as FgmtClassName).doSth()
    }
}

Упрощенный путь:

with ( this.getSupportFragmentManager() ) {
    if ( getBackStackEntryCount()>0 ) {
        var fgmt = fragments[getBackStackEntryCount()-1]
        if ( fgmt is FgmtClassName ) {
            (fgmt as FgmtClassName).doSth()
        }
    }
}
1
ответ дан anamkin 17 September 2019 в 07:35
поделиться
  • 1
    Для записи, I' ve имел эту проблему прежде. Из-за синхронизации диалогового окна, отображаемого через обратный вызов, возможно, что нет ничего, что можно сделать другой затем для ловли исключения при попытке отобразить диалоговое окно и подавить его (если Вы не хотите попытаться синхронизировать все обратные вызовы с состоянием действия). –  26 February 2014 в 04:21

это столь просто, не столько кода, который необходимо написать yourFragment.isAdded() или yourFragment.isVisible();

я предпочитаю isAdded (), они оба возвращаются, булево значение используют его в том, если условие и должно инициализировать Ваш фрагмент в onCreate () иначе, Вы получите пустое исключение точки.

0
ответ дан 22 November 2019 в 23:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: