2015-03-19 86 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); 

不知道這是否是正確的方法,但它對我有用。