Progressbar выкидывает java.lang.NullPointerException, где ошибка?

300
14 июня 2017, 01:06

Предполагаю что дело в модификаторах доступа, но не могу понять почему pbHealth.setProgress(a) выдает NullPointerException?

public class MyActivity extends AppCompatActivity {
private ProgressBar pbHealth;
static int progressHealth, maxProgressHealth;
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    pbHealth = (ProgressBar) findViewById(R.id.pbHealth);
    progressHealth = pbHealth.getProgress();
    maxProgressHealth = pbHealth.getMax();
}
public int getHealthProgress() {
    return progressHealth;
}
public void setHealthProgress(int a) {
    pbHealth.setProgress(a); //ВОТ ЗДЕСЬ ВЫБРАСЫВАЕТ ОШИБКУ!!!
}
public int getHealthMax() {
    return maxProgressHealth;
}
}

Второй Класс:

public class Tab1_Action extends Fragment implements View.OnClickListener {
View rootView;
MyActivity main;
RelativeLayout btnSleep;
static int addHealth;
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
                         @Nullable Bundle savedInstanceState){
    rootView = inflater.inflate(R.layout.tab1_action, container, false);
    main = new MyActivity();
    return rootView;
}
    public void onClick(View v) {
    switch (v.getId())
    {
        case R.id.btnSleep:
            if (main.getHealthProgress() < main.getHealthMax())
            {
                main.setHealthProgress(main.getHealthProgress() + addHealth); //ВОТ ЗДЕСЬ ПРОИСХОДИТ ВЫЗОВ МЕТОДА В КОТОРОМ ОШИБКА!!!
            }
            break;
        default:
            break;
    }
}

}

Answer 1

Потому что main = new MyActivity(); не вызывает метод onCreate и следовательно pbHealth не инициализирован.

Из фрагменте можно получить доступ к элементу активити:

ProgressBar pbHealth = (ProgressBar) getActivity().findViewById(R.id.pbHealth);

А дальше делайте что хотите с ним.

READ ALSO
Шифровать и дешифровать строку в java [требует правки]

Шифровать и дешифровать строку в java [требует правки]

Здравствуйте! Есть потребность сохранять пароль на устройствеКак выполнить шифрование - дешифрование в java (Android)

342
Что значит бинарная совместимость в Java?

Что значит бинарная совместимость в Java?

Что значит бинарная совместимость в Java?

284
JSON парсинг в Android

JSON парсинг в Android

Имеется код от https://restcountrieseu/rest/v2/all

279
Spring HATEOAS как получить HAL ?

Spring HATEOAS как получить HAL ?

Данные методы возвращают на клиент ответ с Content-type json , но мне нужен HAL или HAL + JSON

227