【问题标题】:I have a Navigation Drawer and want open another isolated fragment我有一个导航抽屉,想打开另一个孤立的片段
【发布时间】:2020-05-02 00:37:46
【问题描述】:

我有一个导航抽屉,当我单击一个按钮时,我想转到其他片段,我无法访问导航抽屉和其他任何东西。我只想在左上角有一个黑色箭头返回并返回带有所有片段的导航抽屉。 我尝试了一些方法,但不像我希望的那样正常工作,导航器继续可访问并一个接一个地查看机器人布局。

主要片段控制器

   @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toolbar toolbar = findViewById(R.id.toolbar);
        DrawerLayout drawerLayout=findViewById(R.id.drawer);
        NavigationView navigationView=findViewById(R.id.nav_view);

        setSupportActionBar(toolbar);

        appBarConfiguration= new AppBarConfiguration.Builder(R.id.nav_home,
                R.id.nav_user_data,R.id.nav_join_group,
                R.id.nav_user_groups,R.id.nav_search_documents)
                .setDrawerLayout(drawerLayout).build();

        navController = Navigation
                .findNavController(this,R.id.nav_host_fragment);
        NavigationUI.setupActionBarWithNavController(this,navController,appBarConfiguration);
        NavigationUI.setupWithNavController(navigationView,navController);



    }

    @Override
    public boolean onSupportNavigateUp() {
        return NavigationUI.navigateUp(navController,appBarConfiguration)
                || super.onSupportNavigateUp();
    }

我正在尝试在我的 ActionBar 上使用一个按钮,当我单击它时应该转到我的新片段(带有通用应用程序,但带有一个后退按钮)

【问题讨论】:

    标签: java android android-fragments fragment navigation-drawer


    【解决方案1】:

    我们需要在我们的navigation.xml(我们定义与Fragment 和布局关联的Fragment 的文件)中为我们想要去的Fragment 添加一个Fragment。在我们所在的片段中添加一个具有唯一 id 和我们想要去的地方的操作。
    抱歉,我知道这有点混乱。

    导航
    我们从那里出发

    <fragment
            android:id="@+id/nav_user_data"
            android:name="com.example.androidapplication_reto2.project.activities.navigationfragments.SeeAndModifyUserDataFragment"
            android:label="User Data"
            tools:layout="@layout/fragment_see_and_modify_user_data"
            >
            <action
                android:id="@+id/action_nav_user_data_to_nav_modify_data"
                app:destination="@+id/nav_modify_data" />
        </fragment>`
    

    到那里

    <fragment
            android:id="@+id/nav_modify_data"
            android:name="com.example.androidapplication_reto2.project.activities.navigationfragments.ModifyUserDataFragment"
            android:label="Modify User Data"
            tools:layout="@layout/fragment_modify_user_data"
            />
    

    使用我们在 origen 片段中定义的动作。
    ORIGEN FRAGMENT

    在片段中,当您单击一个按钮时,就会发生这种情况。

    Navigation.findNavController(getView()).navigate(R.id.action_nav_user_data_to_nav_modify_data);
    
    

    【讨论】:

      【解决方案2】:

      您只需像其他人一样在navigation.xml 文件中指定您的操作。

      它会自行更改汉堡图标,因为您在这两行代码中将导航控制器与 NavDrawer 同步:

      NavigationUI.setupActionBarWithNavController(this,navController,appBarConfiguration);
      NavigationUI.setupWithNavController(navigationView,navController);
      

      【讨论】:

      • 那是为我的菜单的其他项目添加导航,不是吗?但我不会将其他项目添加到我的导航视图中。我想当我点击应用程序的一个特定按钮时转到我无法访问导航视图的其他片段,如果我点击后退箭头返回我的最后一个片段。
      • 如果您使用导航库制作它也没关系
      猜你喜欢
      • 1970-01-01
      • 2013-12-16
      • 1970-01-01
      • 2021-11-30
      • 1970-01-01
      • 1970-01-01
      • 2021-12-28
      • 1970-01-01
      • 2015-07-30
      相关资源
      最近更新 更多