Cyn*_*azo 36 android button navigation-drawer drawerlayout
我有一个没有任何操作栏的导航栏(我不想要一个操作栏).我正在尝试这样做,以便我有一个可以打开导航抽屉的按钮.
我知道有对DrawerLayout一个名为openDrawer方法 http://developer.android.com/reference/android/support/v4/widget/DrawerLayout.html#openDrawer(android.view.View)
我不知道如何使用它,但我在点击时尝试制作一个按钮,运行此方法:
DrawerLayout mDrawerLayout = (DrawerLayout) getView().findViewById(R.id.drawer_layout);
mDrawerLayout.openDrawer(mDrawerLayout);
Run Code Online (Sandbox Code Playgroud)
当我点击它时,它给了我一个Java NullPointerException.有人有什么想法吗?
编辑:此代码在片段内,我试图在片段外引用这些抽屉布局.我使用了调试器,它显示mDrawlerLayout为NULL.
有什么建议?
谢谢!
ath*_*hor 53
它给你一个空指针,因为你试图在片段视图中找到抽屉布局,当它实际上在活动视图中时.
快速破解你想要的是找到像这样的视图:
getActivity().findViewById(R.id.drawer_layout)
Run Code Online (Sandbox Code Playgroud)
这应该工作.更好的方法是在活动上打开抽屉的方法
public void openDrawer(){
mDrawerLayout.openDrawer(mDrawerLayout);
}
Run Code Online (Sandbox Code Playgroud)
在onCreate活动中运行你的findViewById:
mDrawerLayout = (DrawerLayout) getView().findViewById(R.id.drawer_layout);
Run Code Online (Sandbox Code Playgroud)
mDrawerLayout应该是您活动的成员变量.
然后在你的片段中你可以打电话:
//cast activity to MyActivity so compiler doesn't complain
((MyActivity)getActivity()).openDrawer();
Run Code Online (Sandbox Code Playgroud)
更好的方法是在片段中创建一个侦听器,并将该活动设置为片段的侦听器.然后你可以在活动上调用一个方法,类似于上面.我会让你做一些研究如何做到这一点.
归档时间: |
|
查看次数: |
72856 次 |
最近记录: |