我有一个应用程序,其中包含一个包含左侧导航抽屉的活动。 此活动还会动态加载不同的片段。在片段上添加导航抽屉
现在的重点是:我想附加到每个片段不同的右侧抽屉(实现一些过滤器),附加在片段负载。
我试图复制和再利用navigationDrawer.setUp(int fragmentId, DrawerLayout drawerLayout)
代码MyFragment.onAttach(...)
的方法,但我得到了NullPointerException
与mFragmentContainerView = getActivity().findViewById(R.id.filter_drawer);
(我认为getActivity()。findViewById(...)无法找到任何东西)。
下面是从我把我的CustomerFragment自动生成NavigationDrawerFragment复制的代码:
mFragmentContainerView = getActivity().findViewById(R.id.filter_drawer);
mDrawerLayout = (DrawerLayout) activity.findViewById(R.id.drawer_layout);
// set a custom shadow that overlays the main content when the drawer opens
mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
mDrawerToggle = new ActionBarDrawerToggle(
getActivity(), /* host Activity */
mDrawerLayout, /* DrawerLayout object */
R.drawable.ic_drawer, /* nav drawer image to replace 'Up' caret */
R.string.navigation_drawer_open, /* "open drawer" description for accessibility */
R.string.navigation_drawer_close /* "close drawer" description for accessibility */
) {
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
if (!isAdded()) {
return;
}
getActivity().invalidateOptionsMenu(); // calls onPrepareOptionsMenu()
}
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
if (!isAdded()) {
return;
}
if (!mUserLearnedDrawer) {
// The user manually opened the drawer; store this flag to prevent auto-showing
// the navigation drawer automatically in the future.
mUserLearnedDrawer = true;
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity());
sp.edit().putBoolean(PREF_USER_LEARNED_DRAWER, true).apply();
}
getActivity().invalidateOptionsMenu(); // calls onPrepareOptionsMenu()
}
};
// If the user hasn't 'learned' about the drawer, open it to introduce them to the drawer,
// per the navigation drawer design guidelines.
if (!mUserLearnedDrawer && !mFromSavedInstanceState) {
mDrawerLayout.openDrawer(mFragmentContainerView);
}
// Defer code dependent on restoration of previous instance state.
mDrawerLayout.post(new Runnable() {
@Override
public void run() {
mDrawerToggle.syncState();
}
});
mDrawerLayout.setDrawerListener(mDrawerToggle);
我搜索了一个解决方案的网络,但每个人都没有的我想的正好相反:“管理片段通过导航抽屉“,我想要”自定义导航抽屉上的片段“。
我该如何做到这一点?
http://www.androidhive.info/2013/11/android-sliding-menu-using-navigation-drawer/霍夫看看 – 2014-08-28 10:51:11
你需要两个侧边导航抽屉吧? – deniz 2014-08-28 11:01:19
是的,两面。但一个是主要活动,一个是jn片段。 – Luca 2014-08-28 11:56:54