Я новичок в Android Studio и Kotlin, поэтому извиняюсь, если я что-то не понимаю.
Я не знаю, как именно это работает в Android Studio, но я знаю, что можно использовать как findNavController().navigate()
, так и FragmentTransaction
, чтобы открыть новое представление, но я не могу понять разница между ними, хотя они оба, кажется, выполняют схожую функцию.
Также я пытался использовать FragmentTransaction , чтобы открыть представление, а затем из этого нового представления, которое я использовал перейти , чтобы открыть другой, но по какой-то причине приложение вылетело, когда я попытался выполнить метод navigate () .
Может ли кто-нибудь более осведомленный дать мне немного больше информации о том, что делать эти оба метода делают? Спасибо.
Кроме того, здесь я предоставляю несколько примеров кода, которые я использовал как для навигации, так и для FragmentTransaction.
navigate ()
override fun onOptionsItemSelected(item: MenuItem?): Boolean
{
var id = getResID(item?.itemId)
if (id != -1)
{
findNavController(R.id.nav_host_fragment).navigate(id, null)
}
return super.onOptionsItemSelected(item)
}
private fun getResID(itemID: Int?) : Int
{
var id = -1
when (itemID)
{
R.id.Settings -> id = R.id.from_home_to_settings
R.id.Home -> id = R.id.from_settings_to_home
}
return id
}
FragmentTransaction
override fun onOptionsItemSelected(item: MenuItem?): Boolean
{
val trans = manager.beginTransaction()
val fragment = getFragmentByID(item?.itemId)
trans.replace(R.id.nav_host_fragment, fragment)
trans.addToBackStack(null)
trans.commit()
return super.onOptionsItemSelected(item)
}
private fun getFragmentByID(itemID: Int?) : Fragment
{
when (itemID)
{
R.id.Settings -> return SettingsFragment()
R.id.Home -> return HomeFragment()
}
return HomeFragment()
}