【问题标题】:Data Passing from Parent Fragment to Tabbed Fragment (child) - Android数据从父片段传递到选项卡片段(子) - Android
【发布时间】:2018-06-24 07:29:49
【问题描述】:

我想将数据从父片段传递到选项卡式片段(子)以进行初始数据传递(当父片段第一次加载时)我使用了捆绑数据。当在子片段的嵌套片段中时,我调用 PopbackStack() 以便通过单击按钮返回。在那里我需要更新之前传递到子选项卡片段的捆绑数据。捆绑数据没有得到更新的数据集

父片段 - 初始状态

 public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        ViewPager viewPager = (ViewPager) getView().findViewById(R.id.pager);
        CropFragAdapter adapter = new CropFragAdapter(getChildFragmentManager());



        Fragment tabfragment1 = new CropAlreadyPlantedFragment();
        Fragment tabfragment2 = new FuturePlantedFragment();


            Bundle b = new Bundle();
            b.putString("RAWJsonArr", INITAL_DATA_FOR_TAB_1);
            tabfragment1.setArguments(b);

            b.putString("RAWJsonArr", INITAL_DATA_FOR_TAB_2);
            tabfragment2.setArguments(b);



        adapter.addFragment(tabfragment1, "Already Planted");
        adapter.addFragment(tabfragment2, "Future Planted");


        viewPager.setAdapter(adapter);

        TabLayout tabLayout = (TabLayout) getView().findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(viewPager);

    }

子片段 - 选项卡片段

 public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        cropAlreadyPlantedModel = new CropAlreadyPlantedModel();
        String RAWJsonArr =null;
        Bundle b = getArguments();
        if (b != null) {
            RAWJsonArr = b.getString("RAWJsonArr");
            JSONOBJ = null;
            try {
                DATASET = new JSONArray(RAWJsonArr);
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }


        View view = cropAlreadyPlantedModel.getCropItems(inflater, container, getContext(), DATASET);
        return view;
    }

Child->Child Fragment的按钮点击

 public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
            super.onViewCreated(view, savedInstanceState);

            saveBtn = (Button) getView().findViewById(R.id.button);
            saveBtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {


                    JSONObject obj = new JSONObject();
                    try {
                        obj.put("crop_details",DATASETARRY);
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }

                    if(SELECTED_TAB ==0) {
                        childDataCropDetails = obj; //static variable in Parent Fragment
                    }
                    else if(SELECTED_TAB ==1){
                        Future_childDataCropDetails = obj; //static variable in Parent Fragment
                    }
                    FragmentManager manager = getActivity().getSupportFragmentManager();


                    manager.popBackStack();

                }
            });


        }

我在这里想念什么?请帮忙

【问题讨论】:

    标签: java android android-fragments tabs


    【解决方案1】:

    问题是我在子片段中所说的范围是错误的(不是当前范围)。

    Bundle b = this.getArguments();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多