导航通过继承动态启动目标位置

时间:2019-12-23 11:54:40

标签: android android-fragments android-navigation id android-navigation-graph

我正在使用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的方式...

0 个答案:

没有答案