我了解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
答案 0 :(得分:-1)
有很多方法可以将信息从父Activity传递到片段。
在Fragment上使用setArguments。
片段mFragment = new MyFragment(); Bundle args = new Bundle(); args.put **(KEY,值); mFragment.setArguments(参数);
直接使用片段实例。
内部活动, mFragment = getFragmentManager()。findFragmentById(id)或findFragmentByTag(tag);
mFragment.methodCall();