Как установить другой значок навигации на панели инструментов для разных фрагментов при использовании android компонента навигации? - PullRequest
0 голосов
/ 04 мая 2020

Это достигается с помощью приведенного ниже кода, но когда я нажимаю на поиск или учетная запись значок нижней навигации, то сначала отображается значок навигации по умолчанию, а затем удаляется. как избежать этого в навигации. enter image description here

enter image description here

enter image description here

Основной код активности

class MainActivity : AppCompatActivity(), TempToolbarTitleListener {

private lateinit var navController : NavController

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    setSupportActionBar(toolbar)
    setupNav()
}

private fun setupNav() {
    navController = Navigation.findNavController(this, R.id.fragment_nav)
    setupActionBarWithNavController(this, navController)
    NavigationUI.setupWithNavController(bottomNavigationView, navController)
}

override fun onSupportNavigateUp(): Boolean { return navController.navigateUp() }

override fun updateTitle(title: String, icon: Int) {
    val drawable: Drawable
    toolbar.title = title

    when {
        icon != 0 -> {
            drawable = resources.getDrawable(icon)
            toolbar.navigationIcon = drawable
        }
        else ->  toolbar.navigationIcon = null
    }
}

}

Я использую интерфейс для получения информации для обновления информации панели инструментов

interface

interface TempToolbarTitleListener {
fun updateTitle(title: String, icon : Int)

}

Поиск Фрагмент, где я не хочу значок навигации, я передаю 0 и, если хочу, я передаю рисуемый файл

 override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?): View? {
    (activity as TempToolbarTitleListener).updateTitle("Search Here",0)
    return inflater.inflate(R.layout.fragment_search, container, false)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...