I have an appbar that contains a search, I want to make it appear only in a fragment, not in all as it is happening now. How would I change his visibility?
Main Activity where is it implemented
class MainActivity : AppCompatActivity() {
private lateinit var toggle: ActionBarDrawerToggle
private val controlador by lazy {
findNavController(R.id.pokemons_activity_nav_host)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main_activity)
configNavControler()
configDrawer()
}
private fun configDrawer() {
toggle = ActionBarDrawerToggle(this, drawerLayout as DrawerLayout?, R.string.open,
R.string.close)
(drawerLayout as DrawerLayout?)?.addDrawerListener(toggle)
toggle.syncState()
supportActionBar?.setDisplayHomeAsUpEnabled(true)
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
if(toggle.onOptionsItemSelected(item)){
return true
}
return super.onOptionsItemSelected(item)
}
private fun configNavControler() {
val navView: BottomNavigationView = findViewById(R.id.main_activity_bottom_navigation)
val navHostFragment = supportFragmentManager
.findFragmentById(R.id.pokemons_activity_nav_host) as NavHostFragment
val navController = navHostFragment.navController
navView.setupWithNavController(navController)
configNavView(navController, navView) // configura para ver se o Nav View aparece ou nao
}
private fun configNavView(
navController: NavController,
navView: BottomNavigationView
) {
// pega o id do fragment e compara,se for igual, faz as atribuições necessárias (aparecer ou
desaparecer Nav View)
navController.addOnDestinationChangedListener { controller, destination, arguments ->
if (destination.id == R.id.entrada_graph) {
navView.visibility = View.GONE
} else {
navView.visibility = View.VISIBLE
}
}
}
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
val inflater = menuInflater
inflater.inflate(R.menu.search_menu, menu)
val manager = getSystemService(Context.SEARCH_SERVICE) as SearchManager
val searchItem = menu?.findItem(R.id.action_search)
val searchView = searchItem?.actionView as SearchView
searchView.setSearchableInfo(manager.getSearchableInfo(componentName))
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener{
override fun onQueryTextSubmit(query: String?): Boolean {
searchView.clearFocus()
searchView.setQuery("", false)
searchItem.collapseActionView()
Toast.makeText(this@MainActivity, "Carregando $query", Toast.LENGTH_LONG).show()
return true
}
override fun onQueryTextChange(newText: String?): Boolean {
return false
}
})
return true
}
}
I want to make it appear in only one fragment, I tried to implement the same as my BottomNavigation but I couldn't