如何将父Activity中的信息传递给RUNNING片段?

时间:2015-08-06 01:02:55

标签: java android android-fragments arraylist listener

我了解Fragments可以通过Activity的{​​{1}}和onAttach()等方法从父implementations接收信息,但这些方法仅涉及传递信息在每个Listeners的概念。我想知道如何在Fragment运行时从Fragment更改Activity中的信息;例如,在我的情况下,我有Fragment个检查项目作为我的父导航Navigation Drawer。检查对应于Activity

中应显示ArrayList的哪些项目

如何让Fragment. Fragment's立即响应父ArrayList的更改而不重新创建Activity

Fragment

@Override public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, final int childPosition, long id) { checkBox = (CheckBox) v.findViewById(R.id.show_child_subject_checkBox); checkBox.toggle(); tempSI = SubjectInfo.findById(SubjectInfo.class, childItem.get(groupPosition).get(childPosition).getId()); onSubjectCheck(tempSI); tempSI.subjectChecked = !tempSI.subjectChecked; tempSI.save(); childItem.get(groupPosition).set(childPosition, tempSI); myAdapter.notifyDataSetChanged(); Toast.makeText(getApplicationContext(), "Toggled " +groupPosition + "|" + childPosition, Toast.LENGTH_SHORT).show(); // the oncheckedchangedListener now resides and operates out of adapter // in a much more efficient, clean manner return true; } 是Activity中Listener的实现。也许这是这样做的最佳方式,但我想我至少可以说明我是如何玩弄这个想法的。

onSubjectCheck

1 个答案:

答案 0 :(得分:-1)

有很多方法可以将信息从父Activity传递到片段。

  1. 在Fragment上使用setArguments。

    片段mFragment = new MyFragment(); Bundle args = new Bundle(); args.put **(KEY,值); mFragment.setArguments(参数);

  2. 直接使用片段实例。

    内部活动, mFragment = getFragmentManager()。findFragmentById(id)或findFragmentByTag(tag);

    mFragment.methodCall();