Attempt to invoke virtual method 'void android.arch.lifecycle.LiveData.observe on a null object reference

You must observe the same instance of your LiveData. In your CompanyRepository class you create a new LiveData instance every time you access the company, which means your activity is then observing an old instance.

The getCompany method should be changed to always return the same instance of the LiveData. Also, you should change setValue() to postValue() because you are trying to update the value on a background thread.

final MutableLiveData<CompanyEntity> data = new MutableLiveData<>();
public LiveData<CompanyEntity> getCompany() {

    webService.getCompany().enqueue(new Callback<CompanyEntity>() {
        @Override
        public void onResponse(Call<CompanyEntity> call, Response<CompanyEntity> response) {
            data.postValue(response.body());
        }

        @Override
        public void onFailure(Call<CompanyEntity> call, Throwable t) {

        }
    });

    return data;
}