Исключение android.view.InflateException: Binary XML file line: #... Error inflating class fragment
может произойти, если вы манипулируете с getActivity()
внутри вашего фрагмента перед вызовом onActivityCreated()
. В таком случае вы получаете неверную ссылку на деятельность и не можете на это полагаться.
Например, следующий шаблон неправильный:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
final View view = inflater.inflate(R.layout..., container, false);
Button button = getActivity().findViewById(R.id...);
button.setOnClickListener(...); - another problem: button is null
return view;
}
Правильный шаблон # 1
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
final View view = inflater.inflate(R.layout..., container, false);
Button button = view.findViewById(R.id...);
button.setOnClickListener(...);
return view;
}
Правильный шаблон # 2
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Button button = getActivity().findViewById(R.id...);
button.setOnClickListener(...);
}