Bottomnavigationview не работает, когда отключить разрешение и вернуться в приложение - PullRequest
0 голосов
/ 12 марта 2019

Если я пойду, чтобы вручную отключить разрешения телефона, то приложение будет перезапущено.

Bottomnavigationview не ответил, когда перезапуск приложения был завершен.

Нажатие кнопки не изменит Fragment.

Но Fragment в то время были восстановлены.

class MyActivity : AppCompatActivity(), OnMyRedirectRequest {

private val uiNavBottom by lazy(LazyThreadSafetyMode.NONE) { findViewById<BottomNavigationView>(R.id.nav_bottom) }
private val eventNavigate = BottomNavigationView.OnNavigationItemSelectedListener { onRedirect(it.itemId) }
private lateinit var vmMyModel: MyViewModel

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    vmMyModel = ViewModelProviders.of(this).get(MyViewModel::class.java)
    uiNavBottom.setOnNavigationItemSelectedListener(eventNavigate)
    savedInstanceState ?: onRedirect(R.id.home)
}

override fun onRedirect(pageId: Int, options: Bundle?): Boolean {
    var selectedFragment: Fragment? = null
    val manager: FragmentManager = supportFragmentManager

    when (pageId) {
        R.id.home -> {
            selectedFragment = if (vmMyModel.selectedPage != 0) HomePage.newInstance() else null
            vmMyModel.selectedPage = 0
        }
        R.id.owner -> {
            selectedFragment = if (vmMyModel.selectedPage != 1) OwnerPage.newInstance() else null
            vmMyModel.selectedPage = 1
        }
        R.id.setting -> {
            selectedFragment = if (vmMyModel.selectedPage != 1) SettingPage.newInstance() else null
            vmMyModel.selectedPage = 1
        }
        else -> return false
    }
    selectedFragment?.let { fragment ->
        try {
            manager.beginTransaction()
                    .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
                    .replace(R.id.fl_page, fragment)
                    .commitNow()
        } catch (ex: IllegalStateException) {
            Log.e("ex", ex.toString())
        }
        return true
    }
    return false
    }
}
...