2015-03-19 87 views
0

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

我有两个名为HomeFragment和FindPeopleFragment的片段。在HomeFragment片段的按钮调用FindPeopleFragment

这里是我的按钮单击事件写在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"); 
    } 

下面是代码编写的onCreate MainActivity

mDrawerList.setOnItemClickListener(new SlideMenuClickListener()); 

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

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

+0

你是指更换导航抽屉是什么意思?你想要改变另一个导航抽屉吗?如果是这样,这可能是不可能的。您可以为不同的活动提供不同的导航抽屉,但不能针对同一活动的不同片段。 – Apurva 2015-03-19 07:17:54

+0

@Apurva当我从抽屉列表中选择FindPeopleFragment时,它显示我已选中。但是当我从HomeFragment调用它时,那么抽屉表仍然会显示我的HomeFragment为选中状态。我希望在我从HomeFragment中调用FindPeople片段时进行更新。 – 2015-03-19 07:24:05

回答

1

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

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

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

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