Ошибка при установке Progress Bar progressBar.setVisibility(View.VISIBLE)

Рейтинг: -1Ответов: 1Опубликовано: 02.08.2023

Помогите с задачей, пожалуйста. Выдает такую ошибку

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ProgressBar.setVisibility(int)' on a null object reference
    at com.example.mvvm_test.view.MainActivity$4.onChanged(MainActivity.java:94)
    at com.example.mvvm_test.view.MainActivity$4.onChanged(MainActivity.java:91)

Ругает за строчки с ProgressBar

    mMyViewModel.getShowLoadingLiveData().observe(this, new Observer<Void>() {
                @Override
                public void onChanged(Void unused) {
                    progressBar.setVisibility(View.VISIBLE);
                }
            });
            mMyViewModel.getHideLoadingLiveData().observe(this, new Observer<Void>() {
                @Override
                public void onChanged(Void unused) {
                    progressBar.setVisibility(View.GONE);
                }
            });
    
    
    
    public class MyViewModel extends AndroidViewModel {
        private final MutableLiveData<NumbersResponsePojo> pojoLiveData = new MutableLiveData<>();
        private LiveData<List<Numbers>> numbers = new MutableLiveData<>();
        private MutableLiveData <String> errorMessageLiveData = new MutableLiveData<>();
        private final MutableLiveData<Void> showLoadingLiveData = new MutableLiveData<>();
        private final MutableLiveData<Void> hideLoadingLiveData = new MutableLiveData<>();
    
        private final WebRepo numberRepository;
        private final DataBaseRepo dataBaseRepo;
    
        public MyViewModel(Application application, WebRepo numberRepository) {
            super(application);
            dataBaseRepo = new DataBaseRepo(application);
            numbers = dataBaseRepo.getAllFacts();
            this.numberRepository = numberRepository;
        }
    
        void insert(Numbers numbers) {
            dataBaseRepo.insert(numbers);
        }
    
        public void setPojoLiveData(NumbersResponsePojo pojoLiveData) {
            setIsLoading(true);
            this.pojoLiveData.setValue(pojoLiveData);
        }
    
        private void setIsLoading(boolean loading) {
            if (loading) {
                showLoadingLiveData.postValue(null);
            } else {
                hideLoadingLiveData.postValue(null);
            }
        }
    
        public void getNumbers(String num) {
            numberRepository.getNumbers(num)
                    .subscribe(new Observer<NumbersResponsePojo>() {
                        @Override
                        public void onSubscribe(Disposable d) {
                        }
    
                        @Override
                        public void onNext(NumbersResponsePojo numbersResponsePojo) {
                            Numbers numbers = new Numbers();
                            numbers.facts = numbersResponsePojo.getText();
                            numbers.number = numbersResponsePojo.getNumber();
                            numbers.time = System.currentTimeMillis();
                            setPojoLiveData(numbersResponsePojo);
                            insert(numbers);
    
                            setIsLoading(false);
                            //errorMessageLiveData.postValue("There is not items!");
                        }
    
                        @Override
                        public void onError(Throwable e) {
                            setIsLoading(false);
                            errorMessageLiveData.postValue("Internet is missing");
                        }
    
                        @Override
                        public void onComplete() {
                        }
                    });
        }
    
        public void getRandomNumbers(String num) {
            numberRepository.getRandomNumbers(num)
                    .subscribe(new Observer<NumbersResponsePojo>() {
                        @Override
                        public void onSubscribe(Disposable d) {
                        }
    
                        @Override
                        public void onNext(NumbersResponsePojo numbersResponsePojo) {
                            Numbers numbers = new Numbers();
                            numbers.facts = numbersResponsePojo.getText();
                            numbers.number = numbersResponsePojo.getNumber();
                            numbers.time = System.currentTimeMillis();
                            setPojoLiveData(numbersResponsePojo);
                            insert(numbers);
    
                            setIsLoading(false);
                        }
    
                        @Override
                        public void onError(Throwable e) {
    
                            setIsLoading(false);
                            errorMessageLiveData.postValue("Internet is missing");
                        }
    
                        @Override
                        public void onComplete() {
                        }
                    });
        }
    
        public LiveData<NumbersResponsePojo> getPojoLiveData() {
            return pojoLiveData;
        }
    
    
        public MutableLiveData<String> getErrorMessageLiveData() {
            return errorMessageLiveData;
        }
        public void setErrorMessageLiveData(String errorMessageLiveData) {
            this.errorMessageLiveData.setValue(errorMessageLiveData);
        }
    
        public LiveData<List<Numbers>> getDataFromDB() {
            return numbers;
        }
    
        public MutableLiveData<Void> getShowLoadingLiveData() {
            return showLoadingLiveData;
        }
    
        public MutableLiveData<Void> getHideLoadingLiveData() {
            return hideLoadingLiveData;
        }
    }

Что не так? Спасибо

Ответы

▲ -1
<ProgressBar
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/progressBar"
            android:indeterminate="true"
            android:layout_gravity="center"
            android:elevation="2dp"
            android:visibility="invisible"/>
Главное не забыть это в XML) ответ уже нашла)