2014-02-19 40 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公众。