如何在导航抽屉活动模板中的片段之间传递字符串变量

Posted

技术标签:

【中文标题】如何在导航抽屉活动模板中的片段之间传递字符串变量【英文标题】:How to pass string variable between fragments in navigation drawer activity template 【发布时间】:2021-12-28 07:49:04 【问题描述】:

告诉我如何在 android Studio 4.0.1 中的导航抽屉活动模板的两个片段之间传递字符串变量,最好带有程序代码示例 我尝试使用意图来做到这一点,但我不明白在哪里指定它 Мой код MainActivity.java:

package com.example.myt;

import android.os.Bundle;
import android.view.View;
import android.view.Menu;

import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
import com.google.android.material.navigation.NavigationView;

import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

public class MainActivity extends AppCompatActivity 

    private AppBarConfiguration mAppBarConfiguration;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        FloatingActionButton fab = findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() 
            @Override
            public void onClick(View view) 
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            
        );
        DrawerLayout drawer = findViewById(R.id.drawer_layout);
        NavigationView navigationView = findViewById(R.id.nav_view);
        // Passing each menu ID as a set of Ids because each
        // menu should be considered as top level destinations.
        mAppBarConfiguration = new AppBarConfiguration.Builder(
                R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow)
                .setDrawerLayout(drawer)
                .build();
        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
        NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
        NavigationUI.setupWithNavController(navigationView, navController);
    

    @Override
    public boolean onCreateOptionsMenu(Menu menu) 
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    

    @Override
    public boolean onSupportNavigateUp() 
        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
        return NavigationUI.navigateUp(navController, mAppBarConfiguration)
                || super.onSupportNavigateUp();
    

【问题讨论】:

【参考方案1】:

片段之间的通信应该通过父活动发生。

您可以在文档中阅读更多相关信息(包括代码示例):

https://developer.android.com/guide/fragments/communicate

【讨论】:

以上是关于如何在导航抽屉活动模板中的片段之间传递字符串变量的主要内容,如果未能解决你的问题,请参考以下文章

如何在底部导航片段(或导航抽屉)之间传递数据?

在 Android Studio 的默认导航抽屉模板中使用按钮在片段之间切换

在片段和活动之间导航

在导航抽屉管理的片段之间移动

更新基本导航抽屉活动的参数

单击导航抽屉的项目不会打开片段