在button/图像点击切换导航抽屉“打开”

我创build了一个连接到包含一个图像视图的XML的片段。 导航抽屉(使用操作栏compat)在activity_main.java内部设置,工作正常。 我想要做的是,当我点击片段内的图像时,导航抽屉应该“切换打开”。

在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);

Solutions Collecting From Web of "在button/图像点击切换导航抽屉“打开”"

这些行引用了错误的观点:

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

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

如果这个视图是activity_main的子视图,那么你应该可以将它们改为:

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

另外,我会让这些class级成员,而不是最终的。

它工作在button点击

 mButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { drawer.openDrawer(GravityCompat.START); } }); 

它适用于图片点击

 mImageview.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { drawer.openDrawer(GravityCompat.START); } }); 

按照这些指南。

– 创build一个导航抽屉

– 使用导航抽屉的Android滑动菜单