setUserVisibleHint 在 Fragment 中的 onCreateView 之前调用 [英] setUserVisibleHint called before onCreateView in Fragment
问题描述
我正在研究 ViewPager
并使用 Fragment
在那里我发现
I am working on ViewPager
and using Fragment
there I found
setUserVisibleHint() 在 Fragment 中的 onCreateView() 之前调用
setUserVisibleHint() called before onCreateView() in Fragment
我正在使用支持库 android.support.v4.app.Fragment
这是图书馆的问题吗?
我怎样才能摆脱它?
编辑
我覆盖了 setUserVisibleHint() 并且没有调用 super 来摆脱它.
I Override setUserVisibleHint() and not calling super to get rid of it.
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
//FIXED: setUserVisibleHint() called before onCreateView() in Fragment causes NullPointerException
//super.setUserVisibleHint(isVisibleToUser);
}
推荐答案
// create boolean for fetching data
private boolean isViewShown = false;
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (getView() != null) {
isViewShown = true;
// fetchdata() contains logic to show data when page is selected mostly asynctask to fill the data
fetchData();
} else {
isViewShown = false;
}
}
使用 isViewShown
实例变量来决定是在 onCreateView()
还是在 setUserVisibleHint()
中获取数据.
Use isViewShown
instance variable to decide whether to fetch data in onCreateView()
or in setUserVisibleHint()
.
以下代码包含 onCreateView()
的逻辑:
Below code contains logic for onCreateView()
:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.main_layout, container, false);
// view initialization steps.......
if (!isViewShown) {
fetchData();
}
// do other stuff
}
此代码将解决您的问题.因为它解决了我的问题.:)
This code will solve your problem. As It solved my problem. :)
这个技巧将在 onCreateView()
中获取数据以直接从一个页面跳转到另一个页面,而当您滑动视图时,它将从 setUserVisibleHint()
中获取数据方法.:)
This trick will fetch data in onCreateView()
for direct jumping from one page to another, whereas when you swipe the view it will fetch the data from setUserVisibleHint()
method. :)
这篇关于setUserVisibleHint 在 Fragment 中的 onCreateView 之前调用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!