我有一個片段AroundMeFragment它有一個查看尋呼機有兩個片段MapFragment
和ListFragment
。當我第一次進入這個片段時,一切正常,但是當我點擊一個項目進入一個新片段的詳細視圖並返回AroundMeFragment時,視圖是空白的,沒有任何項目被繪製。而且,如果我退出此片段並輸入另一個片段,則片段爲空。ViewPager在空白時,我回到片段
當我從細節片段返回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();
}
}
MainActivity。只有一個活動支持應用程序中的所有片段。
....
case ConstantsMenu.ARROUND_ME_SECTION:
Fragment = ArroundMeFragment.newInstance(bundle);
break;
....
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.content_frame, mFragment);
if (hasToAddToBackStack) {
ft.addToBackStack(null);
}
ft.commit();
*嵌套片段不在版本16和更低的兼容* - 本地的。但是,您可以使用兼容性軟件包中基本相同的碎片。你的問題的代碼有一個問題,如果你打算使用嵌套片段,那麼使用'getChildFragmentManager()'而不是'getFragmentManager()'。 – Luksprog
您可以通過使用我在此處提供的適配器在不使用getChildFragmentManager()的情況下實現此目的:http://stackoverflow.com/questions/7700226/display-fragment-viewpager-within-a-fragment/18234088#18234088 – Slickelito