我创建了一个挂钩到包含一个图像视图的
XML的片段.在activity_main.java中设置了导航抽屉(使用actionbar compat),并且工作正常.我想要做的是,当我点击片段内的图像时,导航抽屉应该“切换打开”.
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);
另外,我会让这些班级成员而不是最终成员.
原文地址:https://www.jb51.cc/android/315503.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。