按下后退按钮时查看寻呼机为空白

Man*_*ish 5 android android-fragments android-viewpager

我有一个片段,我放置了一个包含三个片段的视图寻呼机,当我借助以下代码从这三个片段中的任何一个打开另一个片段时:

FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction transaction = fragmentManager.beginTransaction();
        transaction.replace(R.id.content_frame, fragment);
        fragment.setRetainInstance(true);
            transaction.addToBackStack(null);
        transaction.commit();
Run Code Online (Sandbox Code Playgroud)

它像魅力一样打开,但是当我按下后退按钮时,视图寻呼机的一个视图消失了。我尝试了在 stackoverflow 中提到的不同方式,但没有帮助。

第一个片段里面我放置我的 viewPager 代码:

public class Fragment1 extends Fragment implements
        OnClickListener {

    ICallback callback;
    private LinearLayout headerContainer;
    private ImageView headerLogo;
    private TextView headerName;
    private Button menuBarButton;

    MyAdapter adapter;
    ViewPager pager;
    ActionBar actionBar;

    private Button progOverview, progStr, bonusPoint;

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        if (activity instanceof ICallback) {
            this.callback = (ICallback) activity;
        }
        actionBar = activity.getActionBar();
        actionBar.show();
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = setUpView(inflater, container);

        return rootView;
    }

    private View setUpView(LayoutInflater inflater, ViewGroup container) {

        View rootView = inflater.inflate(
                R.layout.fragment_about_champions_club, container, false);

        // set content of layout
        headerContainer = (LinearLayout) rootView
                .findViewById(R.id.second_top_header);
        headerContainer.setBackgroundColor(getResources().getColor(
                R.color.prog_str_blue));
        headerLogo = (ImageView) rootView.findViewById(R.id.header_logo);
        headerLogo.setBackgroundResource(R.drawable.about_champions_ticon);
        headerName = (TextView) rootView.findViewById(R.id.header_name);
        headerName.setText(R.string.about_champ_title);

        adapter = new MyAdapter(getFragmentManager());
        pager = (ViewPager) rootView.findViewById(R.id.pager);
        pager.setAdapter(adapter);

        return rootView;
    }


    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        if (savedInstanceState != null) {
            // Restore last state for checked position.
        }
    }
    }  
}
Run Code Online (Sandbox Code Playgroud)

在viewpager中显示的片段视图之一是:

public class ProgramOverViewFragment extends Fragment {

    ICallback callback;

    @Override
    public void onAttach(Activity activity) {

        super.onAttach(activity);
        if (activity instanceof ICallback) {
            this.callback = (ICallback) activity;
        }

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        ViewGroup rootView = (ViewGroup) inflater.inflate(
                R.layout.fragment_program_overview, container, false);

        TextView termsAndCond = (TextView) rootView
                .findViewById(R.id.terms_and_condition_button);
        termsAndCond.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
FragmentManager fragmentManager = getSupportFragmentManager();
            FragmentTransaction transaction = fragmentManager.beginTransaction();
            transaction.replace(R.id.content_frame, fragment);
            fragment.setRetainInstance(true);
                transaction.addToBackStack(null);
            transaction.commit();

            }
        });

        return rootView;
    }
}
Run Code Online (Sandbox Code Playgroud)

和我的适配器代码:

public class MyAdapter extends FragmentStatePagerAdapter {


    public MyAdapter(FragmentManager fm) {
        super(fm);

    }

    @Override
    public android.support.v4.app.Fragment getItem(int index) {
        switch (index) {
        case 0:
            return new ProgramOverViewFragment();
        case 1:
            return new ProgramStructureFragment();
        case 2:
            return new BonusPointFragment();
        }
        return null;
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return 3;
    }

}
Run Code Online (Sandbox Code Playgroud)

请告诉我我做错了什么。 只是一个注意:viewpager 在半屏中显示片段,而从中打开的片段在全屏中打开。 谢谢