Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我能';t更新可见片段的视图_Android_Android Fragments_Tabs - Fatal编程技术网

Android 我能';t更新可见片段的视图

Android 我能';t更新可见片段的视图,android,android-fragments,tabs,Android,Android Fragments,Tabs,简而言之,我的问题是:我在onResume()之前调用一个片段的方法,我不知道为什么 我没有使用setRetainInstance。我有一个带有SearchView和ViewPager的活动。我还有一个FragmentStatePagerAdapter,它将2个片段保存在列表中 MySearchView具有作为OnQueryTextListener的侦听器的活动。 当我提交时,在监听器内onquerytexsubmitI调用: //make changes in shared preferenc

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

我没有使用setRetainInstance。我有一个带有SearchView和ViewPager的活动。我还有一个
FragmentStatePagerAdapter
,它将2个片段保存在
列表中

My
SearchView
具有作为
OnQueryTextListener
的侦听器的活动。 当我提交时,在监听器内
onquerytexsubmit
I调用:

//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
突然为false,因此我无法更新可见片段的视图。我只能通过更改当前选项卡和检测片段中的更改来查看更改:

@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
  }

到目前为止,从getSupportFragmentManager()获取片段。getFragments()似乎工作得很好。手动调用onResume()不是一个好主意。谢谢@minhazur。现在我调用一个方法,而不是onResume。