【发布时间】: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