Исключение NullPointerException с использованием Imagebutton во фрагменте

#java #android #android-layout #android-fragments

#java #Android #android-макет #android-фрагменты

Вопрос:

я использую imagebutton во фрагменте и пытаюсь открыть drawerlayout с помощью кнопки изображения. У фрагмента и activity есть эта кнопка и в одних и тех же местах, поэтому я разместил код в обоих местах. Код Activity, вероятно, не работает, потому что фрагмент покрывает его

 public class MainFragment extends Fragment {

  private ImageButton mImageButton;

  public MainFragment() {

  }



  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
              Bundle savedInstanceState) 

{


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


    mImageButton = (ImageButton) getView().findViewById(R.id.qpaper_menu_fragmain);   


    mImageButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ((MyActivity)getActivity()).openDrawer();
        }
    });             

    return view;
  }


}
 

imagebutton внутри xml

 <ImageButton
    android:id="@ id/qpaper_menu_fragmain"
    android:layout_width="60dp"
    android:layout_height="60dp"
    android:background="@drawable/menu_button_blue"
    android:contentDescription="@string/description" />
 

Редактировать: извините, выше написано
, что я получаю исключение NullPointerException с
помощью getView view выдает ошибку обратно в eclipse и не работает

Ответ №1:

проблема:

  View().findViewById(R.id.qpaper_menu_fragmain);
 

Вы не можете найти / ссылаться на идентификатор представления из класса, вам нужно найти / ссылаться на него из вашего раздутого представления, которое вы уже сделали.

решение:

 View view = inflater.inflate(R.layout.fragment_main, container,false);
 mImageButton = (ImageButton) view.findViewById(R.id.qpaper_menu_fragmain);  
 

Комментарии:

1. ммм, извините, я этого не понял, потому что у меня уже все это записано, во-вторых, извините, я тестировал материал, и предполагалось, что это будет getView, а не View

2. @SahaabZahid вы все еще создаете представление внутри onCreateView, поэтому getView вернет null. Вместо этого используйте тот, который я реализовал выше