2016-05-15 75 views
0

我想要做的就是使用3个片段与选定的工具栏(来自活动)共享同一个Spinner的片段活动。我想在用户更改微调器中的值时更新每个片段内的listview数据。android-片段共享来自调用活动的监听器

我首先尝试在每个片段上设置onItemSelectedListener,但它确实很奇怪。然后,我看到为相同的设置多个监听器是个不错的主意。所以现在我已经在活动中了。每当值更改时,监听器都会被调用,但我需要它告诉片段它已被调用,以便它们可以更新其内容。

谢谢!

回答

0

如果您有对片段实例的引用,则可以在片段内添加一个方法,以通知它该选择更改。

// inside fragment 
public void selectionChanged(int position) { 
    // update listView 
} 


// in the activity 
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
    fragmentA.selectionChanged(position); 
    fragmentB.selectionChanged(position); 
    fragmentC.selectionChanged(position); 
} 

如果您使用的是ViewPager,你不必你可以使用事件总线片断实例的引用。

这里有几个:
Otto
EventBus

+0

有没有让他们在活动中实例化和使用ViewPager的方法吗?我几乎不熟悉Android编程,并且不太了解选项卡式活动的工作原理(我使用了默认选项卡式活动创建器)。 编辑:我更喜欢这个解决方案,因为它是用于大学项目的,使用外部库可能是一个问题。 –

+0

是的,您可以在您的活动中实例化这些片段,并将它们传递给您的寻呼机适配器。 –

+0

如何在活动内实例化时显示(?)碎片? –