那是满口的。我有一个带有两个选项卡的基本选项卡式活动,每个选项卡与一个微调器共享一个片段,该微调器在每个选项卡的布局文件中声明:
标签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" />
主要的Tabbed Activity类当然有两个嵌套的静态Fragment类;每个标签一个。
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 :(得分:0)
如果您愿意使用库,我强烈推荐Event Bus。
然后在您的详细信息片段中,您只需
EventBus.getDefault().post(value);
在片段中,您希望获得值add
EventBus.getDefault().register(this);
到onCreate并创建一个名为
的方法public void onEvent(ValueType value){
// do what you want with the value here
}
这将获取您的值并将其发布到与该值类型匹配的任何内容(即,如果您的值是String,则任何以字符串形式接收的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);
}