Navigation+Toolbar에 OptionsMenu를 표시하려면 setSupportActionBar의 위치를 주의하십시오.
개요
Jetpack의 Navigation 이야기입니다.
https://developer.android.com/guide/navigation
제목에서 보듯이 Navigation에서 Toolbar를 사용하여 Options Menu를 보낼 때 사소한 일로 걸려 넘어져서 남습니다.
탐색의 버전은 다음과 같습니다.implementation 'androidx.navigation:navigation-fragment-ktx:2.1.0'
implementation 'androidx.navigation:navigation-ui-ktx:2.1.0'
프로비저닝
MainActivity에는 Toolbar가 있습니다.
표시된 화면은 Fragment로 제작되었고 두 개의 화면이 있습니다.
첫 번째 프레임의 도구 모음에는 제목만 표시됩니다.
두 번째 프레임워크의 Toolbar는 내비게이션 제어와 OptionsMenu를 포함하고 첫 번째 프레임워크로 되돌아갑니다.
Toolbar의 설정은 Activity이고 OptionsMenu의 설정은 두 번째 Fragment에서 이루어집니다.
도구상자 설정
MainActivity.kt
class MainActivity : AppCompatActivity() {
lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
setupToolbar()
}
private fun setupToolbar() {
val navController = findNavController(R.id.nav_host_fragment)
val toolbar = binding.toolbar
// (1) OptionsMenuを出すために必要
setSupportActionBar(toolbar)
// (2) タイトル設定、Up navigateボタンのために必要
toolbar.setupWithNavController(navController)
// (2)はこちらの書き方でもOK
// NavigationUI.setupWithNavController(toolbar, navController)
}
}
위에서 말한 바와 같이 Activity에 Toolbar를 설정하면 기대하는 행동이 있습니다.
OptionsMenu가 나타나지 않습니다.
private fun setupToolbar() {
val navController = findNavController(R.id.nav_host_fragment)
val toolbar = binding.toolbar
// (2) タイトル設定、Up navigateボタンのために必要
toolbar.setupWithNavController(navController)
// (2)はこちらの書き方でもOK
// NavigationUI.setupWithNavController(toolbar, navController)
}
setSupport ActionBar(toolbar)라고 부르지 않으면 OptionsMenu가 나오지 않습니다.
잘못된 위쪽 탐색 버튼
private fun setupToolbar() {
val navController = findNavController(R.id.nav_host_fragment)
val toolbar = binding.toolbar
// (2) タイトル設定、Up navigateボタンのために必要
toolbar.setupWithNavController(navController)
// (2)はこちらの書き方でもOK
// NavigationUI.setupWithNavController(toolbar, navController)
// (1) OptionsMenuを出すために必要
setSupportActionBar(toolbar)
}
이렇게 하면 setupWithNavController 다음에 setSupportActionBar (toolbar) 를 설정하면 Up 단추가 표시될 때 무효입니다.
또한 Toolbar를 사용할 때 Navigation은 내비게이션 단추의 이벤트를 자동으로 처리하기 때문에 onSupportNavigateUp()을 덮어쓸 필요가 없습니다.
예제 코드
아래에 코드가 있습니다.
https://github.com/iiinaiii/UI-Samples/blob/master/app/src/main/java/com/iiinaiii/uisamples/ui/MainActivity.kt
Reference
이 문제에 관하여(Navigation+Toolbar에 OptionsMenu를 표시하려면 setSupportActionBar의 위치를 주의하십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/IIInaIII/items/8956bbc9a766afb40537
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
implementation 'androidx.navigation:navigation-fragment-ktx:2.1.0'
implementation 'androidx.navigation:navigation-ui-ktx:2.1.0'
MainActivity에는 Toolbar가 있습니다.
표시된 화면은 Fragment로 제작되었고 두 개의 화면이 있습니다.
첫 번째 프레임의 도구 모음에는 제목만 표시됩니다.
두 번째 프레임워크의 Toolbar는 내비게이션 제어와 OptionsMenu를 포함하고 첫 번째 프레임워크로 되돌아갑니다.
Toolbar의 설정은 Activity이고 OptionsMenu의 설정은 두 번째 Fragment에서 이루어집니다.
도구상자 설정
MainActivity.kt
class MainActivity : AppCompatActivity() {
lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
setupToolbar()
}
private fun setupToolbar() {
val navController = findNavController(R.id.nav_host_fragment)
val toolbar = binding.toolbar
// (1) OptionsMenuを出すために必要
setSupportActionBar(toolbar)
// (2) タイトル設定、Up navigateボタンのために必要
toolbar.setupWithNavController(navController)
// (2)はこちらの書き方でもOK
// NavigationUI.setupWithNavController(toolbar, navController)
}
}
위에서 말한 바와 같이 Activity에 Toolbar를 설정하면 기대하는 행동이 있습니다.
OptionsMenu가 나타나지 않습니다.
private fun setupToolbar() {
val navController = findNavController(R.id.nav_host_fragment)
val toolbar = binding.toolbar
// (2) タイトル設定、Up navigateボタンのために必要
toolbar.setupWithNavController(navController)
// (2)はこちらの書き方でもOK
// NavigationUI.setupWithNavController(toolbar, navController)
}
setSupport ActionBar(toolbar)라고 부르지 않으면 OptionsMenu가 나오지 않습니다.
잘못된 위쪽 탐색 버튼
private fun setupToolbar() {
val navController = findNavController(R.id.nav_host_fragment)
val toolbar = binding.toolbar
// (2) タイトル設定、Up navigateボタンのために必要
toolbar.setupWithNavController(navController)
// (2)はこちらの書き方でもOK
// NavigationUI.setupWithNavController(toolbar, navController)
// (1) OptionsMenuを出すために必要
setSupportActionBar(toolbar)
}
이렇게 하면 setupWithNavController 다음에 setSupportActionBar (toolbar) 를 설정하면 Up 단추가 표시될 때 무효입니다.
또한 Toolbar를 사용할 때 Navigation은 내비게이션 단추의 이벤트를 자동으로 처리하기 때문에 onSupportNavigateUp()을 덮어쓸 필요가 없습니다.
예제 코드
아래에 코드가 있습니다.
https://github.com/iiinaiii/UI-Samples/blob/master/app/src/main/java/com/iiinaiii/uisamples/ui/MainActivity.kt
Reference
이 문제에 관하여(Navigation+Toolbar에 OptionsMenu를 표시하려면 setSupportActionBar의 위치를 주의하십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/IIInaIII/items/8956bbc9a766afb40537
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
class MainActivity : AppCompatActivity() {
lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
setupToolbar()
}
private fun setupToolbar() {
val navController = findNavController(R.id.nav_host_fragment)
val toolbar = binding.toolbar
// (1) OptionsMenuを出すために必要
setSupportActionBar(toolbar)
// (2) タイトル設定、Up navigateボタンのために必要
toolbar.setupWithNavController(navController)
// (2)はこちらの書き方でもOK
// NavigationUI.setupWithNavController(toolbar, navController)
}
}
private fun setupToolbar() {
val navController = findNavController(R.id.nav_host_fragment)
val toolbar = binding.toolbar
// (2) タイトル設定、Up navigateボタンのために必要
toolbar.setupWithNavController(navController)
// (2)はこちらの書き方でもOK
// NavigationUI.setupWithNavController(toolbar, navController)
}
private fun setupToolbar() {
val navController = findNavController(R.id.nav_host_fragment)
val toolbar = binding.toolbar
// (2) タイトル設定、Up navigateボタンのために必要
toolbar.setupWithNavController(navController)
// (2)はこちらの書き方でもOK
// NavigationUI.setupWithNavController(toolbar, navController)
// (1) OptionsMenuを出すために必要
setSupportActionBar(toolbar)
}
아래에 코드가 있습니다.
https://github.com/iiinaiii/UI-Samples/blob/master/app/src/main/java/com/iiinaiii/uisamples/ui/MainActivity.kt
Reference
이 문제에 관하여(Navigation+Toolbar에 OptionsMenu를 표시하려면 setSupportActionBar의 위치를 주의하십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/IIInaIII/items/8956bbc9a766afb40537텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)