我使用片段创建了一个导航抽屉。我有一个函数,当单击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
的代码链接答案 0 :(得分:1)
我也面临着类似的问题。我想在事件中加载Next Fragment。即在按钮单击的主片段上,应加载下一个片段。当导航抽屉打开时,所选项目应该是已加载的项目。
我通过在Navigation Drawer列表对象上调用 setItemChecked 方法解决了问题。
if (mDrawerListView != null) {
mDrawerListView.setItemChecked(position, true);
不确定这是否是正确的方法,但它对我有用。