gpt4 book ai didi

android - setUserVisibleHint 在 Fragment 中的 onCreateView 之前调用

转载 作者:IT老高 更新时间:2023-10-28 13:23:10 29 4
gpt4 key购买 nike

我正在研究 ViewPager 并使用 Fragment 我发现

setUserVisibleHint() called before onCreateView() in Fragment

我正在使用支持库 android.support.v4.app.Fragment

中的 Fragment

这是图书馆的问题吗?

我怎样才能摆脱它?

编辑

我重写了 setUserVisibleHint() 并且没有调用 super 来摆脱它。

@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() 中获取数据。

以下代码包含 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
}

此代码将解决您的问题。因为它解决了我的问题。 :)

此技巧将在 onCreateView() 中获取数据,以便从一个页面直接跳转到另一个页面,而当您滑动 View 时,它将从 setUserVisibleHint() 中获取数据方法。 :)

关于android - setUserVisibleHint 在 Fragment 中的 onCreateView 之前调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24161160/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com