ToggleButton предотвращает запуск моего приложения - PullRequest
0 голосов
/ 05 ноября 2019

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

JAVA-код:

.
.
.    
    int colorOff = getResources().getColor(R.color.toggleOff);
    int colorOn = getResources().getColor(R.color.toggleOn);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_balot_calculator); }

//This method is supposed to change the color of the toggle button when it is checked and not checked.
    public void seraA(View view) {
        ToggleButton seraToggle = (ToggleButton) findViewById(R.id.sera_toggle);
            if (seraToggle.isChecked()) {
                seraToggle.setBackgroundColor(colorOn); }
            else
                seraToggle.setBackgroundColor(colorOff);
    }
.
.
.

XML-код:

.
.
.
<ToggleButton
    android:id="@+id/sera_toggle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginHorizontal="8dp"
    android:layout_marginVertical="4dp"
    android:onClick="seraA"
    android:textOn="@string/sera_T"
    android:textOff="@string/sera_T"
    android:textColor="#E0F7FA"
    android:textSize="20sp" />
.
.
.

1 Ответ

0 голосов
/ 06 ноября 2019

Хорошо, поэтому следующая строка выдает его:

Вызывается: java.lang.NullPointerException: попытка вызвать виртуальный метод 'android.content.res.Resources android.content.Context.getResources ()'на нулевой ссылке на объект

Я предполагаю, что ваш класс не инициализирован при вызове getResources ()

Попробуйте вместо этого:

int colorOff;
int colorOn;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_mini_game); 
    colorOff = getResources().getColor(R.color.toggleOff);
    colorOn = getResources().getColor(R.color.toggleOn);
}

Дайте мне знать, еслиэто сработало

...