android – 在按钮/图像点击上切换导航抽屉’打开’

我创建了一个挂钩到包含一个图像视图的 XML的片段.在activity_main.java中设置了导航抽屉(使用actionbar compat),并且工作正常.我想要做的是,当我点击片段内的图像时,导航抽屉应该“切换打开”.

onCreateView方法中的以下代码返回一个空指针:

public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedinstanceState)
            {   

                View view=inflater.inflate(R.layout.home,container,false);

                ImageView img=(ImageView)view.findViewById(R.id.imageView1);

               // Defined inside activity_main.xml
                final LinearLayout mDrawer = (LinearLayout) view.findViewById(R.id.drawer); 

               // Defined inside activity_main.xml
                final DrawerLayout mDrawerLayout = (DrawerLayout)view.findViewById(R.id.drawer_layout); 

                img.setonClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {

                     mDrawerLayout.openDrawer(mDrawer);

                    }
                });

                return view;    
                }

在以下语句中返回空指针:

mDrawerLayout.openDrawer(mDrawer);

解决方法

这些行引用了错误的视图:
final LinearLayout mDrawer = (LinearLayout) view.findViewById(R.id.drawer); 
final DrawerLayout mDrawerLayout = (DrawerLayout)view.findViewById(R.id.drawer_layout);

他们正在’R.layout.home’中寻找抽屉,因为这是你膨胀并设置为视图变量,findViewById()返回null因为它不在那里.

如果此视图是activity_main的子视图,那么您应该能够将这些视图更改为:

final LinearLayout mDrawer = (LinearLayout) getActivity().findViewById(R.id.drawer); 
final DrawerLayout mDrawerLayout = (DrawerLayout) getActivity().findViewById(R.id.drawer_layout);

另外,我会让这些班级成员而不是最终成员.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...