使用不同的数据加载相同的片段

时间:2018-06-16 11:59:11

标签: android android-fragments

我有一个名为 DomaineDashboardFragment 的片段,如果它是当前片段,我用捆绑包中的不同数据打开它,它没有刷新,它保持旧的数据,有没有人有想法解决这个问题? 片段工作正常,问题就在我更改数据时。

3 个答案:

答案 0 :(得分:0)

对于每个人都面临同样的问题,你可以这样做:

      DomaineDashboardFragment currentFragment = (DomaineDashboardFragment) getSupportFragmentManager().findFragmentByTag("DomaineDashboardFragment");

                                                      if(currentFragment != null && currentFragment.isAdded())
                                                         ((MyApplication)getApplication()).removeFragment(MainActivity.this, currentFragment);

                                                    Handler h = new Handler();
                                                    h.postDelayed(new Runnable() {
                                                        @Override
                                                        public void run() {
                                                            DomaineDashboardFragment domaineDashboardFragment = new DomaineDashboardFragment();

                                                            domaineDashboardFragment.setArguments(b);

                                                            ((MyApplication)getApplication()).setUpFragment(MainActivity.this, domaineDashboardFragment, R.id.fragment_container);

                                                        }
                                                    }, 100);

删除片段然后附加新片段

答案 1 :(得分:0)

您可以使用最新的Android Architecture组件并创建ViewModel类。那么,你可以做什么,每当你在json_decode($json, true);中的数据包中获取数据时,将数据设置为ViewModel和Fragment

除此之外,您必须再次分离并附加片段以获取新数据。

答案 2 :(得分:-1)

如果片段已经附加,那么

通过bundle传递数据将不起作用。因此,您需要在片段中创建一个公共方法,例如refresh(),并将数据传递给此方法并更新此方法中的视图。

每当你想刷新时调用fragment.refresh();

<div id="parent">
  <div id="some_content">Some Content</div>
  <div id="sticky">Sticky div</div>
</div>

<div id="space"></div>
<p>Scroll here</p>