2015-03-30 75 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