我有一个活动(MainActivity),它包含一个带有ArrayList<Uri> array_list = new ArrayList<Uri>();
的Fragment(FragmentA)。
我的MainActivity如何获得该array_list的引用?
现在,如果你问我为什么要将一个片段的变量引用到一个包含该片段的活动,我会说,我打算在点击时获取array_list中的项目我的MainActivity上的操作按钮。
我正在使用ViewPager。我没有片段ID。
答案 0 :(得分:3)
Here是一个很好的tuto:
Define an Interface then implement it in the activity
要允许Fragment与其Activity进行通信,您可以在Fragment类中定义接口并在Activity中实现它。 Fragment在其onAttach()生命周期方法中捕获接口实现,然后可以调用Interface方法以与Activity通信。
答案 1 :(得分:1)
最简单的方法可能是使用FragmentManager在活动中检索附加的片段,然后在该片段上调用getMyList()以获取所需的列表。
FragmentA fr = (FragmentA) getFragmentManager().findFragmentById(R.id.my_fragment_a_id);
if(fr != null) {
List<Uri> list = fr.getMyList();
// ... do some fun stuff
}
请注意,由于Activity生命周期而保留对FragmentManager的片段的引用并不是一个好习惯(最终会引用已经收集的片段,或者您可以阻止GC有效地清除内存)
答案 2 :(得分:-1)
简单地说 ArrayList array_list = new ArrayList(); 像静态变量一样 public static ArrayList array_list = new ArrayList(); 并从MainActivity中调用此数组作为 FragmentA.array_list。
**请记住,只要添加此数组中的项目,就不要忘记清除此数组