我正在使用NavigationUI框架,并且我想动态设置startFragment 。我的代码是:
MainActivity.java-onCreate方法
setSupportActionBar(toolbar);
navController = Navigation.findNavController(this, R.id.nav_host_fragment);
NavGraph navGraph = navController.getNavInflater().inflate(R.navigation.main_nav);
navGraph.setStartDestination(DestinationsFactory.getStartDestinationId());
navController.setGraph(navGraph, getIntent().getExtras());
appBarConfiguration = new AppBarConfiguration.Builder(R.id.nav_A_frag, R.id.nav_B_frag, R.id.nav_C_frag)
.setDrawerLayout(drawerLayout)
.build();
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
NavigationUI.setupWithNavController(toolbar, navController, appBarConfiguration);
navigationView.setNavigationItemSelectedListener(this);
问题在于,startFragment是通过使用工厂模式确定的,该模式包含属于同一继承结构的不同片段实例:
片段A;
片段B扩展了片段A;
片段C扩展了片段A;
所以startFragment可以是片段A,B或C,当我通过
获取任何这些片段的ID 时,我的问题就来了return new FragmentX.getId();
因为它总是返回0。
能帮我吗?即使以不同的方式设置startFragment或只是更改获取片段ID的方式...