Android 返回片段时,ViewPager处于空白状态
我在MeFragment周围有一个片段,它有一个带有两个片段的视图寻呼机Android 返回片段时,ViewPager处于空白状态,android,android-viewpager,fragment,Android,Android Viewpager,Fragment,我在MeFragment周围有一个片段,它有一个带有两个片段的视图寻呼机MapFragment和ListFragment。当我第一次在此片段中输入时,一切正常,但当我单击一个项目以进入新片段中的详细视图,并返回到AroundMeFragment时,该视图为空,并且没有绘制任何项目。如果我退出这个片段并输入另一个时间片段为空 当我从细节片段返回到AroundMeFragment时,如何查看片段的内容 ArouundMeFragment: public ArroundMeFragment() { }
MapFragment
和ListFragment
。当我第一次在此片段中输入时,一切正常,但当我单击一个项目以进入新片段中的详细视图,并返回到AroundMeFragment时,该视图为空,并且没有绘制任何项目。如果我退出这个片段并输入另一个时间片段为空
当我从细节片段返回到AroundMeFragment时,如何查看片段的内容
ArouundMeFragment:
public ArroundMeFragment() {
}
public static Fragment newInstance(Bundle bundle) {
ArroundMeFragment f = new ArroundMeFragment();
f.setArguments(bundle);
return f;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
this.activity = activity;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
sectionShowed = MAP_VIEW_ARROUND_ME;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.arround_me_main_layout, container, false);
mViewPager = (ViewPager) v.findViewById(R.id.viewPager);
if (fragments == null) {
fragments = new ArrayList<Fragment>();
fragments.add(MapMainFragment.newInstance());
Bundle bundle = new Bundle();
bundle.putInt(ConstantsTypeSection.TYPE_VIEW_SECTION, ConstantsTypeSection.AROUND_ME_SECTION);
fragments.add(DetailShapelessListViewFragment.newInstance(bundle));
}
mAdapter = new AroundMePagerAdapter(getFragmentManager(), fragments);
mViewPager.setAdapter(mAdapter);
// BTN CHANGE VIEW
btn_change_view = (ImageButton) v.findViewById(R.id.btn_change_view);
btn_change_view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
changeView();
}
});
return v;
}
/**
* Cambia una vista u otra
*/
private void changeView() {
try {
if (sectionShowed == LIST_VIEW_ARROUND_ME) {
mViewPager.setCurrentItem(0);
sectionShowed = MAP_VIEW_ARROUND_ME;
btn_change_view.setImageResource(R.drawable.selector_btn_change_map_arroundme);
} else if (sectionShowed == MAP_VIEW_ARROUND_ME) {
mViewPager.setCurrentItem(1);
sectionShowed = LIST_VIEW_ARROUND_ME;
btn_change_view.setImageResource(R.drawable.selector_btn_change_list_arroundme);
}
} catch (Exception e) {
e.printStackTrace();
}
}// End Method
private class AroundMePagerAdapter extends FragmentPagerAdapter {
private ArrayList<Fragment> fragments;
public AroundMePagerAdapter(FragmentManager fm, ArrayList<Fragment> fragments) {
super(fm);
this.fragments = fragments;
}
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public int getCount() {
return fragments.size();
}
}
嵌套片段在版本16及更低版本中不兼容。现在,您可以动态地执行 我更改了代码,现在我不使用viewpager,而是添加类似于以下代码的片段来将片段切换到另一个片段
getChildFragmentManager().beginTransaction().replace(R.id.container, list, "LIST").setTransitionStyle(FragmentTransaction.TRANSIT_FRAGMENT_FADE).commit();
而不是
mAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager());
由于嵌套片段在版本16和更低版本中不兼容。-本地人。但是,您可以使用基本相同的兼容包中的片段。您问题的代码有一个问题,如果您计划使用嵌套片段,请使用
getChildFragmentManager()
而不是getFragmentManager()
。您可以使用我在此处提供的适配器,在不使用getChildFragmentManager()的情况下实现这一点:
mAdapter = new MyFragmentPagerAdapter(getChildFragmentManager());
mAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager());