【问题标题】:Synchronizing Spinner over two Fragments with ViewPager/TabLayout使用 ViewPager/TabLayout 在两个片段上同步 Spinner
【发布时间】:2017-07-01 17:23:57
【问题描述】:

这就是我的“应用”目前的样子:http://imgur.com/a/dFeLT 我试图同步两个微调器,这样当我在第一个选项卡上选择一个项目时,它也会在第二个选项卡上被选中。

我尝试通过接口进行通信并在 onCreateView 期间在特定片段上更新微调器视图,但由于在片段可见之前已经创建了视图,因此没有任何变化。

还尝试通过覆盖 setUserVisibleHint 在片段变为可见时更新微调器的选定项,它可以工作但看起来一点也不好,因为在滑动和更新微调器之间存在延迟。

当我从片段 1 滑动时,是否可以以片段 2 的微调器中的项目已经设置的方式同步两个微调器?应该双向工作。

干杯

【问题讨论】:

    标签: java android android-fragments android-viewpager android-tablayout


    【解决方案1】:

    您可以使用 setArguments 和 getArguments 来在片段膨胀之前获取数据。

    这里是示例代码:

    父类:

    Bundle bundle = new Bundle();
    fragment1 = new Fragment1();
    bundle.putString("key1","messageContent");
    fragment1.setArguments(bundle);
    

    片段类:

    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup 
    container, @Nullable Bundle savedInstanceState) {
        String x;
        Bundle bundle = new Bundle();
        bundle = getArguments();
        x= bundle.getString("key1");
        return super.onCreateView(inflater, container, savedInstanceState);
    }
    

    【讨论】:

    • 在片段之间传递数据不是我的问题,更重要的是如何在没有明显延迟的情况下更新其他片段微调器。 setUserVisibleHint/getUserVisibleHint 真的很糟糕,因为在它返回 true 之前,你真的可以在滑动之后看到新片段。也不能使用 onCreate/onCreateView 因为片段只会膨胀一次,而不是每次我刷卡时。​​span>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多