-1

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

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&lt;NumbersResponsePojo&gt; pojoLiveData = new MutableLiveData&lt;&gt;();
    private LiveData&lt;List&lt;Numbers&gt;&gt; numbers = new MutableLiveData&lt;&gt;();
    private MutableLiveData &lt;String&gt; errorMessageLiveData = new MutableLiveData&lt;&gt;();
    private final MutableLiveData&lt;Void&gt; showLoadingLiveData = new MutableLiveData&lt;&gt;();
    private final MutableLiveData&lt;Void&gt; hideLoadingLiveData = new MutableLiveData&lt;&gt;();

    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&lt;NumbersResponsePojo&gt;() {
                    @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(&quot;There is not items!&quot;);
                    }

                    @Override
                    public void onError(Throwable e) {
                        setIsLoading(false);
                        errorMessageLiveData.postValue(&quot;Internet is missing&quot;);
                    }

                    @Override
                    public void onComplete() {
                    }
                });
    }

    public void getRandomNumbers(String num) {
        numberRepository.getRandomNumbers(num)
                .subscribe(new Observer&lt;NumbersResponsePojo&gt;() {
                    @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(&quot;Internet is missing&quot;);
                    }

                    @Override
                    public void onComplete() {
                    }
                });
    }

    public LiveData&lt;NumbersResponsePojo&gt; getPojoLiveData() {
        return pojoLiveData;
    }


    public MutableLiveData&lt;String&gt; getErrorMessageLiveData() {
        return errorMessageLiveData;
    }
    public void setErrorMessageLiveData(String errorMessageLiveData) {
        this.errorMessageLiveData.setValue(errorMessageLiveData);
    }

    public LiveData&lt;List&lt;Numbers&gt;&gt; getDataFromDB() {
        return numbers;
    }

    public MutableLiveData&lt;Void&gt; getShowLoadingLiveData() {
        return showLoadingLiveData;
    }

    public MutableLiveData&lt;Void&gt; getHideLoadingLiveData() {
        return hideLoadingLiveData;
    }
}

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

red
  • 105
  • 6

1 Answers1

-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) ответ уже нашла)
  • 1
    Ваш ответ можно улучшить с помощью дополнительной информации. Пожалуйста, нажмите [edit] для добавления подробностей, например, цитат или документации, чтобы другие могли подтвердить правильность вашего ответа. Вы можете найти дополнительную информацию о том, как писать хорошие ответы в Справке. – Дух сообщества Aug 02 '23 at 03:28