如何正确执行 NavController?
How to execute NavController correctly?
enter image description here
我运行这个程序。模拟器将显示停止。它显示 Activity com.example.navigationdemo.MainActivity@1755f0c 在 logcat 的 2131230916 上没有设置 NavController。我不明白为什么它不能执行。请帮我。谢谢。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
NavController controller=Navigation.findNavController(this,R.id.fragmentContainerView);
NavigationUI.setupActionBarWithNavController(this,controller);
}
@Override
public boolean onSupportNavigateUp() {
NavController controller=Navigation.findNavController(this,R.id.fragmentContainerView);
return controller.navigateUp();
//return super.onSupportNavigateUp();
}
NavController controller=Navigation.findNavController(this, R.id.fragmentContainerView);
在 onCreate()
生命周期方法中,使用容器片段的 ID 获取 navController
有点早,因为布局尚未完全构建。
相反,您应该从 supportFragmentManager
:
获取它
NavHostFragment navHostFragment = (NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.fragmentContainerView);
if (navHostFragment != null) {
NavController controller = navHostFragment.getNavController();
NavigationUI.setupActionBarWithNavController(this, controller);
}
enter image description here 我运行这个程序。模拟器将显示停止。它显示 Activity com.example.navigationdemo.MainActivity@1755f0c 在 logcat 的 2131230916 上没有设置 NavController。我不明白为什么它不能执行。请帮我。谢谢。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
NavController controller=Navigation.findNavController(this,R.id.fragmentContainerView);
NavigationUI.setupActionBarWithNavController(this,controller);
}
@Override
public boolean onSupportNavigateUp() {
NavController controller=Navigation.findNavController(this,R.id.fragmentContainerView);
return controller.navigateUp();
//return super.onSupportNavigateUp();
}
NavController controller=Navigation.findNavController(this, R.id.fragmentContainerView);
在 onCreate()
生命周期方法中,使用容器片段的 ID 获取 navController
有点早,因为布局尚未完全构建。
相反,您应该从 supportFragmentManager
:
NavHostFragment navHostFragment = (NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.fragmentContainerView);
if (navHostFragment != null) {
NavController controller = navHostFragment.getNavController();
NavigationUI.setupActionBarWithNavController(this, controller);
}