У меня проблема с попыткой реализовать прослушиватель нажатия кнопки во фрагменте.У меня нет проблем, если есть только одна кнопка, но у меня есть 3 кнопки в пользовательском интерфейсе фрагмента.
Вот что я получаю:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
Код, я сделал его как публичный метод
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_blank, container, false);
first=(Button) view.findViewById(R.id.button_first);
first.setOnClickListener(this);
second=(Button) view.findViewById(R.id.button_second);
second.setOnClickListener(this);
third=(Button) view.findViewById(R.id.button_third);
third.setOnClickListener(this);
// Also I tried these ones but its not possible to :
//first.setOnClickListener((View.OnClickListener) getActivity());
//second.setOnClickListener((View.OnClickListener) getActivity());
//third.setOnClickListener((View.OnClickListener) getActivity());
return view;
}
@Override
public void onClick(View view) {
if (view.getId() == R.id.button_first) {
//some code here
}
if (view.getId() == R.id.button_second) {
//some code here
}
if (view.getId() == R.id.button_third) {
//some code here
}
}
Я могу реализовать слушатель одной кнопки следующим образом:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_blank_fragment5, container, false);
call= (Button) view.findViewById(R.id.button);
call.setOnClickListener(new View.OnClickListener() {
public void onClick(View v)
{
dialContactPhone("Some phone number");
}
});
return view;
}
Но я хотел бы знать, что я делаю неправильно с первым кодом.Почему существует null
?