2015-03-30 60 views
1

這真是一口。我有一個基本選項卡式活動兩個選項卡,每個選項卡股用旋轉器,其在每個標籤的佈局文件中聲明的片段:Android Tabbed Activity - 將spinner值從嵌套片段傳遞到父級活動中的選項卡片段

表1:

<fragment android:name="com.me.fragment.DetailsFragment" 
      android:id="@+id/DetailsFragment1" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

表2:

<fragment android:name="com.me.fragment.DetailsFragment" 
      android:id="@+id/DetailsFragment2" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

當然,主選項卡活動類有兩個嵌套的靜態片段類;每個標籤一個。

public class MyTabbedActivity extends FragmentActivity 
{ 
    public static class FirstTabFragment extends Fragment 
    { 
     //get value from DetailsFragment and "refresh" display values 
    } 

    public static class SecondTabFragment extends Fragment 
    { 
     //... 
    } 
} 

我試圖通過在上述嵌套DetailsFragment旋轉器的所選擇的值,在標籤式活動嵌套靜態標籤類,因此數據可以在其中進行過濾。

也就是說,當第一次加載活動時,默認的一組數據被調用並顯示在選項卡中。當DetailsFragment中的微調器選擇發生更改時,會將參數傳遞給選項卡類,並對數據進行過濾,並更改顯示的值。

我能夠通過接口將DetailsFragment中的值傳遞給主活動(MyTabbedActivity),但我不確定如何將該值傳遞給嵌套的FirstTabFragment和SecondTabFragment片段,並刷新/重新加載視圖。

這樣做的最好方法是什麼?

回答

0

如果你願意使用庫,我會強烈推薦Event Bus

您的詳細信息

然後分段你只是做

EventBus.getDefault().post(value); 

而在要接收該片段的價值增加

EventBus.getDefault().register(this); 

到的onCreate,並創建一個名爲方法

public void onEvent(ValueType value){ 
    // do what you want with the value here 
} 

這會將您的價值發佈到任何符合該值類型的值(即如果您的值是一個字符串,任何onEvent方法以一個字符串作爲參數將接收該值)。由於這個原因,建議創建一個事件類來傳遞。

public class DetailFragmentEvent{ 
    private String value; 

    public DetailFragmentEvent(String value){ 
     this.value = value; 
    } 

    public String getValue(){ 
     return value 
    } 
} 

然後在您的帖子中傳遞。這樣你可以保持你的事件分開。你可以使用事件總線來提供你想要的任何對象,這比編寫大量的接口要簡單得多。

另外,在任何課程中你都註冊了事件總線,註銷它。

@Override 
public void onDestroy() { 
    super.onDestroy(); 
    EventBus.getDefault().unregister(this); 
} 
+0

@Zameron - 如果可能,我寧願避免任何額外的庫。這是需要嗎?另一個接口偵聽器將主活動的值傳遞給選項卡片段類? – 2015-03-30 18:18:51

+0

是否所有的片段同時存在,或者是從細節片段獲取值後開始片段? – Zamereon 2015-03-30 18:27:32

+0

所有片段始終存在,沒有任何片段正在根據更改的參數進行交換或更改。我使用頂部的微調來篩選標籤片段內部的數據,都是。 – 2015-03-30 20:17:02

相關問題