如何使用ViewModel在片段之间进行通信?

时间:2018-05-15 14:01:20

标签: android

我有一个带有“x”个片段的视图寻呼机,第一个是“HomeFragment”:它包含2个下拉列表(Spinner)

其他片段的UI(FragmentA,FragmentB,FragmentC,.....等)根据这些微调器的选定项目值而变化

所以问题是:如何从“HomeFragmet”中的微调器中传递此选定项目值以在其他片段中使用?

1 个答案:

答案 0 :(得分:0)

尝试将选定的值传递给主片段..

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
            Fragment fragment = new HomeFragment();
            Bundle bundle = new Bundle();
           bundle.putString("Key",spinner.getSelectedItem().toString());
            fragment.setArguments(bundle);
            getSupportFragmentManager().beginTransaction()
                    .replace(R.id.fragment_frame, fragment, fragment.getClass().getSimpleName()).addToBackStack(null).commit();

        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });

和In Home片段以这种方式获取价值..

下面的代码调用onCreate方法或onCreateView方法..

 Bundle bundle = this.getArguments();
    if (bundle != null) {
        int i = bundle.getString("key", "defaulValue");
    }