Попытка вызвать виртуальный метод 'int android .widget.SeekBar.getProgress ()' для пустой ссылки на объект - PullRequest
0 голосов
/ 31 марта 2020

Я создаю приложение Android, используя Android Studio. Я получил сообщение об ошибке «Попытка вызвать виртуальный метод 'int android .widget.SeekBar.getProgress ()' для нулевой ссылки на объект». Приложение хорошо работает в интерфейсе, в котором я вижу прогресс и текст «масштаба». Однако, когда мне нужно передать это значение в Firebase, возникает упомянутая ошибка.

В методе OnCreate я определил панель поиска.

SeekBar seekBar = findViewById(R.id.seekBar);
    seekBar.setOnSeekBarChangeListener(seekBarChangeListener);

У меня также был метод onSeekBarChangeListener.

SeekBar.OnSeekBarChangeListener seekBarChangeListener = new SeekBar.OnSeekBarChangeListener() {
    @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean b) {
        scale.setText("How much do it related to you? (Max:5) : " + progress);
    }

    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {

    }

    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {

    }
};

Мне нужно проверить значения, чтобы они обновились до firebase. Целочисленное значение хода выполнения поисковой панели будет изменено на String.

private void ValidateScale(){  

    String validProgress= String.valueOf(seekBar.getProgress());

    if(TextUtils.isEmpty(validProgress)){
        Toast.makeText(this, "Please insert the scale...", Toast.LENGTH_SHORT).show();
    }
    else{
        UpdateScale(validProgress);
    }}

Я не смог обнаружить, что проблема становится нулевой, поскольку указана ошибка, поскольку она показывает значение в пользовательском интерфейсе. Пожалуйста, помогите мне, если кто-нибудь может найти проблему. Спасибо.

1 Ответ

0 голосов
/ 31 марта 2020

Решение GGK помогло мне решить проблему! Спасибо! Решением является определение seekBar еще раз в методе ValidateScale ().

private void ValidateScale(){  

  seekBar=findViewById(R.id.seekBar);
  String validProgress= String.valueOf(seekBar.getProgress());

  if(TextUtils.isEmpty(validProgress)){
      Toast.makeText(this, "Please insert the scale...", Toast.LENGTH_SHORT).show();
  }
   else{
    UpdateScale(validProgress);
  }}

А также спасибо всем за попытку помочь!

...