#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. Вместо этого используйте тот, который я реализовал выше