Трудно сказать, является ли это источником вашей текущей проблемы или нет, но выполнение логики в коде, основанном на текущем тексте на кнопке, является хрупким способом сделать что-то.Вы должны поддерживать это состояние соединения в выделенной переменной.Примерно так:
private enum ConnState {
CONN_DISCONNECTED,
CONN_CONNECTING,
CONN_CONNECTED,
};
private ConnState connState;
private void setConnState(ConnState connState) {
this.connState = connState;
switch (connState) {
case CONN_DISCONNECTED:
loading.setText("Disconnected");
disconnect.setText("Connect");
break;
case CONN_CONNECTING:
loading.setText(...etc...);
disconnect.setText(...);
break;
case CONN_CONNECTED:
loading.setText(...);
disconnect.setText(...);
break;
}
}
И вызовите это при настройке графического интерфейса для инициализации текста кнопки и connState
:
setConnState(CONN_DISCONNECTED);
Тогда вы можете здраво рассуждать о текущем состояниипрограмма, проверяя переменную connState
вместо необходимости синхронизировать строки кнопок везде.