사용 FragmentContainerView
즉시 작동하지 않는 것 같습니다 .
<androidx.fragment.app.FragmentContainerView
class="androidx.navigation.fragment.NavHostFragment"
android:id="@+id/fragment_nav_host"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:navGraph="@navigation/nav_app" />
여기 내 코드가 사용 fragment-ktx:1.2.0-rc01
되며 항상이 오류가 발생합니다.
Caused by: java.lang.IllegalStateException: Activity ...MainActivity@797467d does not have a NavController set on 2131296504
<fragment>
작품과 AFAIK를 사용 하면로 대체되어야 FragmentContainerView
합니다.
나는 뭔가를 놓치고 또는 수있는 사람이 사용 된 FragmentContainerView
A와 NavHostFragment
?
많은 감사합니다!
답변
이 버그 보고서로 인해 :
https://issuetracker.google.com/issues/142847973
(현재) 유일한 방법은 다음과 같습니다.
val navHostFragment = supportFragmentManager
.findFragmentById(R.id.my_nav_host_fragment) as NavHostFragment
val navController = navHostFragment.navController
(자바):
NavHostFragment navHostFragment =
(NavHostFragment) getSupportFragmentManager()
.findFragmentById(R.id.my_nav_host_fragment);
NavController navController = navHostFragment.getNavController();
답변
내가 한 것은 탐색 조각이보기를 부 풀릴 때까지 기다리는 것입니다.
super.onCreate(savedInstanceState)
// Set up the form and list.
setContentView(R.layout.activity_xxx)
// Set up navigation - action bar and sidebar.
/// Let the navigation view check/uncheck the menu items.
nav_view.post { // wait for NavHostFragment to inflate
val navController = findNavController()
nav_view.setupWithNavController(navController)
nav_view.setNavigationItemSelectedListener(this)
}
답변
전화 findNavController
에서 postOnCreate
대신 onCreate
.
답변
android:name
대신에 사용 합니다 class
. 공장.
<androidx.fragment.app.FragmentContainerView
android:name="androidx.navigation.fragment.NavHostFragment"
...
답변
