У меня есть простая раскладка с использованием 3 кнопок.У меня есть слушатель на первой кнопке.Он вызывается, как и ожидалось, по клику.Слушатель проверяет несколько вещей, возможно загружает несколько файлов, затем запускает другое действие.
Во время загрузки файла я хотел бы сообщить пользователю, что загрузка продолжается.Я попробовал обычные подозреваемые, но я увидел, что использование ProgressBar будет много кода.Поэтому я попробовал что-то меньшее: я использовал Toast для отображения сообщения, затем отключил 3 кнопки для продолжительности загрузки.Это код:
int version_pre = getCurrentVersion();
//Check files on remote server
String URL = Data._URL + "/" + Data.OWNER + "/version";
if(!this.downloadFile(URL, "version")) {
Toast.makeText(this, "Download der Dateien fehlgeschlagen. Fahre mit lokaler Version fort.", Toast.LENGTH_LONG).show();
}
int version_post = getCurrentVersion();
if(version_pre != version_post) { //Neu Dateien besorgen
Button b1 = (Button)findViewById(R.id.btn_Prospekt);
b1.setEnabled(false);
b1 = (Button)findViewById(R.id.btn_Einheitenumrechner);
b1.setEnabled(false);
b1 = (Button)findViewById(R.id.btn_Sonstiges);
b1.setEnabled(false);
Toast.makeText(this, "Aktualisierung der Dateien wird gestartet.", Toast.LENGTH_LONG).show();
if(!fetchAllFiles()) {
Toast.makeText(this, "Download der Dateien fehlgeschlagen. Fahre mit lokaler Version fort.", Toast.LENGTH_LONG).show();
}
b1 = (Button)findViewById(R.id.btn_Prospekt);
b1.setEnabled(true);
b1 = (Button)findViewById(R.id.btn_Einheitenumrechner);
b1.setEnabled(true);
b1 = (Button)findViewById(R.id.btn_Sonstiges);
b1.setEnabled(true);
}
return "";
Проблема заключается в следующем: даже при отладке я не вижу, чтобы какой-либо механизм изменения графического интерфейса действительно что-то делал.Отключение кнопок должно выделять их серым цветом.Это не так.Вызов Toast.maketext (). Show () должен отобразить сообщение.Это не так.
Я подозреваю, что это может быть ожидаемым поведением, поскольку оно касается нескольких механизмов.Есть ли ограничение в отношении того, что я могу вызвать в слушателе действий, который изменит интерфейс?Нужно ли вызывать метод refresh () своего рода при изменении пользовательского интерфейса во время прослушивания?
Спасибо.