我无法更新可见片段的视图

时间:2018-06-03 07:07:35

标签: android android-fragments tabs

简而言之,我的问题是:我在onResume()之前调用片段的方法,我不知道为什么。

我没有使用setRetainInstance。 我有一个SearchView和ViewPager的活动。我还有一个FragmentStatePagerAdapter,可以在List中保存2个片段。

我的SearchView将活动作为OnQueryTextListener的监听器。 当我提交时,在侦听器onQueryTextSubmit内部我调用:

//make changes in shared preferences
Fragment fragment = mAdapter.getItem(viewPager.getCurrentItem());
((View) fragment).onLocationChange();

每个片段中onLocationChange的实现是:

@Override
  public void onLocationChange() {
    //avoid null pointer when is called too early in the life cycle
    if (isResumed()) {
      onResume();
    }
  }

问题是有时isResumed突然变错,所以我无法更新可见片段的视图。我可以看到更改只会更改当前选项卡并检测片段中的更改:

@Override
  public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    isVisible = isVisibleToUser;
    // Make sure that fragment is currently visible
    if (isVisible && isResumed()) {
      onResume();
    }
  }

你知道为什么它有时不起作用吗? 我的onResume看起来像:

@Override
  public void onResume() {
    super.onResume();
    if (!getUserVisibleHint()) {
      return;
    }
    //work here
  }

如果您需要更多信息,请与我们联系。 提前致谢。 旧金山

0 个答案:

没有答案