数据从父片段传递到选项卡片段(子) - Android
Posted
技术标签:
【中文标题】数据从父片段传递到选项卡片段(子) - Android【英文标题】:Data Passing from Parent Fragment to Tabbed Fragment (child) - 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();
);
我在这里想念什么?请帮忙
【问题讨论】:
【参考方案1】:问题是我在子片段中所说的范围是错误的(不是当前范围)。
Bundle b = this.getArguments();
【讨论】:
以上是关于数据从父片段传递到选项卡片段(子) - Android的主要内容,如果未能解决你的问题,请参考以下文章
将 Google API 客户端对象从活动传递到滑动选项卡片段