не могу разобраться с написанием кода для вкладок в 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
  1. после строки с return кода в методе быть не должно, потому что он никогда не выполнится.
  2. 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 принято называть с маленькой буквы, а Классы и Интерфейсы с большой - чтобы не путать одно с другим читая код.

→ Ссылка