处理片段回栈抽屉式导航 [英] Handling fragment back stack with Navigation Drawer

查看:73
本文介绍了处理片段回栈抽屉式导航的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我采取抽屉式导航和行之有效的。所以我呼吁片段上的抽屉式导航栏点击,它也正在进一步更我打电话从首页页面片段另一个片段,保持背部堆栈每个片段,但问题又回来了从孩子的片段我可以'preSS牛逼去首页页面片段,并从应用程序只是退出。我不想这样。我要的是点击

I am implementing navigation drawer and works well. So i am calling fragment on navigation drawer click and it is also working and further more i am calling another fragment from Home page fragment and maintain the back stack for every fragment but the problem is back press from the child fragment i can't go to Home page fragment and just exited from application. I don't want this. What i want Click on

Navigation Drawer->HomePageFragment->AnotherChild Fragment(On List Item click of HomePageFragment)

但回到$ P $没有去首页pssed 片段的直接出口与应用。这是我的code:(在片段活性的抽屉式导航栏)

but on back pressed without going to Homepage fragment its directly exit with application. Here is my code: (In Fragment Activity with Navigation Drawer)

class SlideitemListener implements ListView.OnItemClickListener {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,
            long id) {

        updateDisplay(position);
    }

}

private void updateDisplay(int position) {
    Fragment fragment = null;
    switch (position) {
    case 0:
        fragment = new ScheduleFragment();
        break;
    case 1:
        fragment = new Result_Fragment();
        break;
    case 2:
        fragment = new Live_Match_Fragment();
        break;
    case 3:
        // fragment = new Live_Match_Fragment();
        break;

    case 4:
        fragment = new Team_Fragment();
        break;
    default:
        break;
    }

    if (fragment != null) {

        fragmentManager = getFragmentManager();
        fragmentManager.popBackStackImmediate("0", 0);
        int count = fragmentManager.getBackStackEntryCount();
        FragmentTransaction fragmentTransaction = fragmentManager
                .beginTransaction();
        fragmentTransaction.replace(R.id.frame_container, fragment)
                .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
                .addToBackStack(String.valueOf(count)).commit();
        Log.e("Count in Activiy", ""+count);

        // update selected item and title, then close the drawer
        setTitle(menutitles[position]);
        mDrawerLayout.closeDrawer(mDrawerList);
    } else {
        // error in creating fragment
        Log.e("MainActivity", "Error in creating fragment");
    }

}

现在在返回pressed() FragmentActivity

@Override
public void onBackPressed() {
    if (fragmentManager.getBackStackEntryCount() <= 1) {
        finish();

        return;
    }
    super.onBackPressed();
}

现在的列表视图项的点击。

 team_lv.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            // TODO Auto-generated method stub
            TeamDetailFragment myDetailFragment = new TeamDetailFragment();
            FragmentManager fragmentManager = getFragmentManager();
            int count = fragmentManager.getBackStackEntryCount();
            Log.e("Count in Fragment", "" + count);
            FragmentTransaction fragmentTransaction = fragmentManager
                    .beginTransaction();
            fragmentTransaction
                    .replace(R.id.frame_container, myDetailFragment)
                    .setTransition(
                            FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
                    .addToBackStack(String.valueOf(count)).commit();

        }
    });

所以任何人都知道,然后帮我。帮助将AP preciate。

So anybody knows then help me. Help will be appreciate.

推荐答案

我在GitHub上一个示例应用程序来解决你的问题。

I created a sample application on GitHub to solve your problem.

下载片段返回堆栈应用

这篇关于处理片段回栈抽屉式导航的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆