не могу разобраться с написанием кода для вкладок в Bottom Views Navigate Android Studio, ругается на TV = TV.findViewById(R.id.buttonTV);
public class Home extends Fragment {
private Button TV;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_home, container, false);
TV = TV.findViewById(R.id.buttonTV);
TV.setOnClickListener(this::ColorButton);
}
private void ColorButton(View view)
{
TV.setBackgroundColor(Color.RED);
}
}
Ответы (1 шт):
Автор решения: woesss
→ Ссылка
- после строки с
return
кода в методе быть не должно, потому что он никогда не выполнится. TV = TV.findViewById(R.id.buttonTV);
вы пытаетесь проинициализировать переменную, вызывая метод на ней-же (неинициализированной), что приведёт к крэшу сNullPointerException
Искать вью следует в контейнере, который её содержит.
public class Home extends Fragment {
private Button TV;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
// получаем контейнер из разметки в переменную
View view = inflater.inflate(R.layout.fragment_home, container, false);
// ищем вью в контейнере через эту переменную
TV = view.findViewById(R.id.buttonTV);
TV.setOnClickListener(this::ColorButton);
return view;
}
private void ColorButton(View view) {
TV.setBackgroundColor(Color.RED);
}
}
PS: имена методов, полей и переменных в java принято называть с маленькой буквы, а Классы и Интерфейсы с большой - чтобы не путать одно с другим читая код.