从另一个片段调用片段时更改导航抽屉

时间:2015-03-19 06:49:54

标签: android android-fragments navigation-drawer

我使用片段创建了一个导航抽屉。我有一个函数,当单击drawerlist项目时更改片段。我有些人创造了一些片段。我想在按钮点击时调用当前片段中的另一个片段。但是当我点击Button它实际上改变了片段但是我想要在调用片段时改变导航。请给我一些建议。

我有两个名为HomeFragment和FindPeopleFragment的片段。以及调用FindPeopleFragment

的HomeFragment片段中的按钮

这是我在HomeFragment中编写的按钮点击事件

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

    Button btn = (Button) rootView.findViewById(R.id.find_people);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Fragment fragment = new FindPeopleFragment();
            if (fragment != null) {
                FragmentManager fragmentManager = getFragmentManager();
                fragmentManager.beginTransaction()
                        .replace(R.id.frame_container, fragment).commit();
            }
        }
    });

以下是更改MainActivity中片段的代码

Fragment fragment = null;
    switch (position) {
    case 0:
        fragment = new HomeFragment();
        break;
    case 1:
        fragment = new FindPeopleFragment();
        break;
    case 2:
        fragment = new PhotosFragment();
        break;
    case 3:
        fragment = new CommunityFragment();
        break;

    default:
        break;
    }

    if (fragment != null) {
        FragmentManager fragmentManager = getFragmentManager();
        fragmentManager.beginTransaction()
                .replace(R.id.frame_container, fragment).commit();

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

这是用onAreate of MainActivity编写的代码

mDrawerList.setOnItemClickListener(new SlideMenuClickListener());

    // setting the nav drawer list adapter
    adapter = new NavDrawerListAdapter(getApplicationContext(),
            navDrawerItems);
    mDrawerList.setAdapter(adapter);

以下是我正在做同样事情link

的代码链接

1 个答案:

答案 0 :(得分:1)

我也面临着类似的问题。我想在事件中加载Next Fragment。即在按钮单击的主片段上,应加载下一个片段。当导航抽屉打开时,所选项目应该是已加载的项目。

我通过在Navigation Drawer列表对象上调用 setItemChecked 方法解决了问题。

if (mDrawerListView != null) {
    mDrawerListView.setItemChecked(position, true);

不确定这是否是正确的方法,但它对我有用。