【问题标题】:change navigation drawer when call fragment from another fragment从另一个片段调用片段时更改导航抽屉
【发布时间】:2015-03-19 06:49:53
【问题描述】:

我已经使用片段创建了一个导航抽屉。我有一个功能可以在单击抽屉列表项时更改片段。我有一些创建了一些片段。我想在单击按钮时调用当前片段中的另一个片段。但是当我点击 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");
    }

这里是MainActivity的onCreate中写的代码

mDrawerList.setOnItemClickListener(new SlideMenuClickListener());

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

这是我正在做同样事情的代码链接link

【问题讨论】:

  • 更改导航抽屉是什么意思?你想要另一个关于片段更改的导航抽屉吗?如果是这样,那可能是不可能的。您可以为不同的活动设置不同的导航抽屉,但不能为同一活动的不同片段设置。
  • @Apurva 当我从抽屉列表中选择 FindPeopleFragment 时,它显示我已选择。但是当我从 HomeFragment 调用它时,drawerlist 仍然显示 HomeFragment 为选中状态。当我从 HomeFragment 调用 FindPeople 片段时,我希望更新它。

标签: android android-fragments navigation-drawer


【解决方案1】:

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

我通过在导航抽屉列表对象上调用方法 setItemChecked 解决了问题。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-16
    • 2016-01-03
    • 1970-01-01
    相关资源
    最近更新 更多