Android 是否可以使用导航抽屉布局将捆绑包参数发送到所有碎片?

Android 是否可以使用导航抽屉布局将捆绑包参数发送到所有碎片?,android,android-fragments,navigation-drawer,bundle,Android,Android Fragments,Navigation Drawer,Bundle,我有一个导航抽屉,里面有15个片段可以在它们之间切换,我想在这个片段之间存在一个公共数据,所以我只需要从数据库中提取一次,然后在我的所有片段中使用它,有没有办法为我的所有导航片段发送一个包 目前,我只能发送到第一个片段(开头的片段,如下代码所示),我想发送到导航视图的所有片段。。。 我应该使用SharedReferences吗?但数据总是在变化(每当应用程序打开时) NavigationView-NavigationView=findviewbyd(R.id.nav_视图); mAppBarCo

我有一个导航抽屉,里面有15个片段可以在它们之间切换,我想在这个片段之间存在一个公共数据,所以我只需要从数据库中提取一次,然后在我的所有片段中使用它,有没有办法为我的所有导航片段发送一个包

目前,我只能发送到第一个片段(开头的片段,如下代码所示),我想发送到导航视图的所有片段。。。 我应该使用SharedReferences吗?但数据总是在变化(每当应用程序打开时)

NavigationView-NavigationView=findviewbyd(R.id.nav_视图);
mAppBarConfiguration=新建AppBarConfiguration.Builder(R.id.nav_home,R.id.nav_cad_bov,R.id.nav_attBoi,R.id.nav_acomp,
R.id.nav_manejo,R.id.nav_patology,R.id.nav_desp,R.id.nav_ven,R.id.nav_meu anu,
R.id.nav_meus_anun_ed,R.id.nav_cap,R.id.nav_comp,R.id.nav_tuto,R.id.nav_editInfo,R.id.nav_logout)。可设置的布局(抽屉)
.build();
Bundle=新Bundle();
bundle.putString(“amount”,“Katinguele”);//发送到开始片段,我需要发送到所有片段
NavController NavController=Navigation.findNavController(这个,R.id.nav_主机_片段);
navController.setGraph(R.navigation.mobile_navigation,bundle);
NavigationUI.setupActionBarWithNavController(此、navController、mAppBarConfiguration);
NavigationUI.setupWithNavController(navigationView,navController);

您可以跨所有片段使用
sharedViewModel
来实现这一点

public class SharedtViewModel extends ViewModel {
    private MutableLiveData<String> amount;

    public void init()
    {
        amount = new MutableLiveData<>();
    }

    public void setAmount(String amount)
    {
        amount.setValue(amount);
    }
   
    public LiveData<String> getAmount() {
        return amount;
    }
}
最后,在每个片段中,您可以观察到如下情况:

public class FragmentA extends Fragment {
    public void onActivityCreated() {
        SharedViewModel model = ViewModelProviders.of(getActivity()).get(SharedViewModel.class);
        model.getAmount().observe(this, { amount ->
           // Anything here
        });
    }
}

您可以在所有片段中使用
sharedViewModel
,但此方法使我的变量在存储器中保持不变,对吗?这是一种危险,因为我使用这个变量来检查用户是否是高级用户,尽管在Firebase的安全规则中也测试了这一点,你说的是哪种方法?我把SharedViewModel误认为是首选项,我正在尝试实现SharedViewModel,但迄今为止没有成功,你能把你的评论作为答案,让我指定为正确答案吗?我相信我想要的是你所说的。当然,让我添加信息。为什么你要使用
。观察
,而不是简单地获取?观察是一个倾听者吗?@Djonganelsonontrowski观察变化。但如果您不想观察更改,可以使用
String amount=model.getAmount().getValue()对其进行更改时,code>对我的性能和/或内存有很大影响。是否观察
public class FragmentA extends Fragment {
    public void onActivityCreated() {
        SharedViewModel model = ViewModelProviders.of(getActivity()).get(SharedViewModel.class);
        model.getAmount().observe(this, { amount ->
           // Anything here
        });
    }
}