Я пытался сделать это в Котлине, надеюсь, это поможет. во-первых, создайте различные фрагменты и любую навигацию, которую вы хотите, после этого создайте функцию, которая будет использоваться для загрузки фрагментов в действие.
when (item.getItemId()) {
R.id.home -> {
//this is the name of the method I am using for adding fragments
//with bottom navigation bar you can use it with any type o navigation.
loadFragment(getString(R.string.home_fragment), HomeFragment());
appBar.title = "Home"
return true
}
R.id.jobs -> {
loadFragment(getString(R.string.jobs_fragment), JobsFragment());
appBar.title = "Jobs"
return true
}
после этого вот метод
private fun loadFragment(tag: String,loadFragment: Fragment) {
val fManager = supportFragmentManager
val fTransaction = fManager.beginTransaction()
val fragment = fManager.findFragmentByTag(tag)
if (fragment == null) {
fTransaction.replace(R.id.activity_main_content_main, loadFragment,tag);
} else { // re-use the old fragment
fTransaction.replace(R.id.activity_main_content_main, fragment, tag);
}
fTransaction.addToBackStack(tag);
fTransaction.commit();
}
first val fragment = fManager.findFragmentByTag(tag) это будет искать, если фрагмент уже загружен, тогда будет выполнен оператор else и будет отображаться предварительно загруженный фрагмент, но если нет, то переданный нами параметр loadFragment содержит фрагмент вы хотите загрузить тогда, если будет выполнен оператор, который загрузит переданный фрагмент.
person
Shubham Sharma
schedule
08.02.2019