onCreateView前setUserVisibleHint称为片段 [英] setUserVisibleHint called before onCreateView in Fragment
问题描述
我的工作ViewPager并使用片段那儿,我发现
setUserVisibleHint()的片段onCreateView()之前调用
我使用的片段的支持库 android.support.v4.app.Fragment
这是与图书馆有问题?
我如何才能摆脱它?
//创建布尔用于读取数据
私人布尔isViewShown = FALSE;
@覆盖
公共无效setUserVisibleHint(布尔isVisibleToUser){
super.setUserVisibleHint(isVisibleToUser);
如果(getView()!= NULL){
isViewShown = TRUE;
// fetchdata()包含逻辑,以显示数据被选择时大多的AsyncTask填充数据页
fetchData();
} 其他 {
isViewShown = FALSE;
}
}
使用 isViewShown
实例变量来决定是否获取的 onCreateView数据()
或 setUserVisibleHint()
。
下面code包含逻辑 onCreateView()
:
@覆盖
公共查看onCreateView(LayoutInflater充气,容器的ViewGroup,
捆绑savedInstanceState){
查看查看= inflater.inflate(R.layout.main_layout,集装箱,假);
//观点初始化步骤.......
如果(!isViewShown){
fetchData();
}
//做其他的东西
}
这code将解决您的问题。因为它解决了我的问题。 :)
这招将获取的 onCreateView数据()
直接跳跃,从一个网页到另一个,而当你刷卡认为它将从<$ C $获取数据C> setUserVisibleHint()方法。 :)
I am working on ViewPager and using Fragment there I found
setUserVisibleHint() called before onCreateView() in Fragment
I am using Fragment from support library android.support.v4.app.Fragment
is this is a problem with Library ?
How can I get rid of it ?
// 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;
}
}
Use isViewShown
instance variable to decide whether to fetch data in onCreateView()
or in setUserVisibleHint()
.
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. :)
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. :)
这篇关于onCreateView前setUserVisibleHint称为片段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!