不知何故我的Fragment
不会每次都被调用。
这是问题所在:
我有3个这样的标签。
-------------------------------------
|Fragment1 Fragment2 Fragment3 |
| |
| |
| |
-------------------------------------
每当我点击Fragment1然后Fragment3时,都会调用Fragment3的
onCreateView
。但是,当我点击Fragment2然后Fragment3时,它没有。我正在使用扩展
TabsPagerAdapter
的自定义FragmentPagerAdapter
以下是所需的代码段。 (请让我知道是否需要查看更多代码)。
TabsPagerAdapter
public class TabsPagerAdapter extends FragmentPagerAdapter {
private String[] tabs = { "Fragment1", "Fragment2", "Fragment3" };
List<Fragment> fragments;
public TabsPagerAdapter(FragmentManager fm, List<TabsPagerAdapter> fragments) {
super(fm);
this.fragments = fragments;
}
@Override
public CharSequence getPageTitle(int position) {
return tabs[position];
}
@Override
public Fragment getItem(int index) {
return fragments.get(index);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Fragment createdFragment = (Fragment) super.instantiateItem(container, position);
String tag = createdFragment.getTag();
return createdFragment;
}
@Override
public int getCount() {
// get item count - equal to number of tabs
return fragments.size();
}
}
片段3:
public class Fragment3 extends Fragment {
@Override
public void onAttach(Context context) {
super.onAttach(context);
this.context = context;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
context=activity;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
......
Log.i("Blocked List","onCreateView called"); //This doesn't print
//sometimes
getList();//It holds the list for ListView
}
Fragment1
几乎与Fragment2
和Fragment3
相似。帮帮我!
最佳答案
我的解决方案使用仅在ViewPager中可见片段时才触发的Fragments Override方法
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if(isVisibleToUser) {
//fragment visible code
}
else{
//fragment invisible code
}
}