2014-02-19 53 views
0

我有一個包含DrawerLayout的Activity。 我已經在單獨的類中定義了該DrawerLayout的片段。 我想在應該導航到另一個片段的片段內添加一個按鈕。Android碎片導航和更新DrawerLayout

FragmentManager fragmentManager = getFragmentManager(); 
fragmentManager.beginTransaction().replace(R.id.content_frame, new MyActivity()).commit(); 

它可以工作,但DrawerLayout不會更新。標題需要更新以匹配新的片段,並且當抽屜被打開時,舊的片段仍然被選中。

從Fragment導航到Fragment的正確方法是什麼?

+0

你'MyActivity'延伸片段? – nikis

+0

是的,MyActivity擴展片段 – sworded

+0

將類擴展爲片段是非常奇怪的。它可能會混淆其他人。但更接近這個問題:你有沒有遵循這個教程http://developer.android.com/training/implementing-navigation/nav-drawer.html?看看一個函數'selectItem',它擁有你需要的一切。 – nikis

回答

0

我覆蓋片段類的onAttach爲了訪問根活動。 通過這樣做,我能夠將回調接口作爲字段存儲在Fragment中。

在MyActivity.java(片段)

@Override 
public void onAttach(Activity activity) { 
    super.onAttach(activity); 

    try { 
     fragmentNavigation = (IFragmentNavigation) activity; 
    } catch (ClassCastException e) { 
     throw new ClassCastException(activity.toString() + " must implement IFragmentNavigation"); 
    } 
} 
0

你可以讓你的mDrawerList公衆的HostingActivity,那麼您可以通過訪問:

((HostingActivity) getActivity).mDrawerList 

這樣你就可以在調用它都setItemChecked(position, true)setSelection(position)。而且你還可以通過調用更改標題:

getActivity().getActionBar().setTitle("...."); 

或者您也可以使該方法selectItem公衆。