Задать вопрос
  • Attempt to invoke virtual method 'void android.widget.Button.setVisibility(int)' on a null object reference?

    @evgez
    Ошибка возникает из-за того, что вы пытаетесь получить доступ к элементам интерфейса через findViewById() до установки макета активности с помощью setContentView(). В результате переменные driverRegBtn, quest и другие остаются null, и попытка вызвать методы на этих объектах приводит к крашу.

    Исправьте порядок вызовов в onCreate():
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 1. Сначала устанавливаем макет
        setContentView(R.layout.activity_driver_reg_login);
        
        // 2. Теперь инициализируем элементы интерфейса
        driverRegBtn = findViewById(R.id.driverReg);
        quest = findViewById(R.id.quest);
        driverEmail = findViewById(R.id.driverEmail);
        driverPassword = findViewById(R.id.driverPassword);
        signInBtn = findViewById(R.id.signIn);
        statusDriver = findViewById(R.id.statusDriver);
        
        // 3. Теперь можем работать с элементами
        driverRegBtn.setVisibility(View.INVISIBLE);
        
        // Остальной код (EdgeToEdge и т.д.)
        EdgeToEdge.enable(this);
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });
    }


    Убедитесь, что в вашем XML есть все указанные элементы с правильными android:id.

    Для элементов, которые могут быть скрыты/показаны, проверьте начальное состояние видимости в XML (например, android:visibility).

    Используйте аннотацию @Nullable или @NonNull для переменных представлений, чтобы получить подсказки от Android Studio.
    Ответ написан
    1 комментарий