如何正确执行 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);
}