2016-05-15 88 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

如何在活動內實例化時顯示(?)碎片? –