启动片段活动时保留我的导航抽屉

时间:2016-12-24 14:59:44

标签: android android-fragments

到目前为止,我已经有了MainActivity来交换片段。但我已经实施了FragmentActivity以使用ViewPager并在我的抽屉部分中交换Fragments

但是当我点击我的抽屉创建ViewPager的项目时,抽屉就会一起消失。

以下是我如何开始FragmentActivity

private Fragment checkFragment(int itemId) { // Checks what item the user has pressed and calls the right Fragment / Activity
    Fragment fragment = null;

    switch (itemId) {
        // HOME (If user clicks on HOME in Drawer)
        case R.id.nav_home:         
            fragment = new Home(); // Set Fragment to be used
            break;
        // STATS GENERAL (If user clicks on General Stats)
        case R.id.nav_stat_general:
            startActivity(new Intent(this, GeneralStatistics.class)); // Start the Fragment Activity
            fragment = null;
            break;     
    }
    return fragment;
}

这是我的Fragment Activity onCreate方法:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.statistics_general);

    mStatisticsPagerAdapter = new StatisticsPagerAdapter(getSupportFragmentManager());
    mViewPager = (ViewPager) findViewById(R.id.pager);
    mViewPager.setAdapter(mStatisticsPagerAdapter);
}

即使我从一个活动转到另一个活动,我怎么能保留抽屉?

2 个答案:

答案 0 :(得分:0)

保留导航抽屉。你必须用另一个片段替换viewpager内容。

来自您的代码

startActivity(new Intent(this, GeneralStatistics.class));

此行清楚地表明您正在进行另一项活动(不是替换您的viewpager内容的片段)

我建议你看一下这个Example

答案 1 :(得分:0)

解决/解决我的问题:

我不再使用ActivityFragment而只使用Fragment并将其onCreate替换为以下内容:

@Override
public View onCreateView(LayoutInflater inflater,
                         ViewGroup container, Bundle savedInstanceState) {

    view =  inflater.inflate(R.layout.statistics_general_vp, container, false);
    // No more setContentView

    mViewPager = (ViewPager) view.findViewById(R.id.pager);
    mStatisticsPagerAdapter = new StatisticsPagerAdapter(getActivity().getSupportFragmentManager());
    mViewPager.setAdapter(mStatisticsPagerAdapter);

    return view;
}
相关问题