Переключить навигационный ящик 'open' on Button / Image click

Я создал фрагмент, который подключен к XML, содержащему одно изображение. Навигационный ящик (с помощью команды action) настроен внутри 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 "Переключить навигационный ящик 'open' on Button / Image click"

Эти строки ссылаются на неправильный вид:

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

Кроме того, я бы сделал этих членов класса, а не окончательным.

Он работает при нажатии кнопки

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

Следуйте этим руководствам.

– Создание ящика навигации

– Android Sliding Menu с помощью навигационного ящика