У меня есть планшет Android с двумя профилями. Один из них - профиль администратора, а другой - ограниченный гостевой профиль. Код, который я разрабатываю, должен изменить цвет Android ImageButton от слушателя. Функция, которая обновляет цвет ImageButton называется следующим образом:setBackground android ImageButton не обновляет цвет, если он не называется дважды
private static void udate_color() {
UIHandler.post(new Runnable() {
@Override
public void run() {
ImageButton image_button = (ImageButton) findViewById(R.id.messageButton);
image_button.setBackground(res.getDrawable(R.drawable.green_border_grey_curved));
});
}
Если планшет в администраторе профиль цвет обновляется без каких-либо проблем. Если планшет находится в ограниченном гостевом профиле, приведенный выше код не работает; цвет обновляется только в том случае, если функция setBackground color вызывается два раза. Если функция вызывается только один раз, цвет не обновляется. Это означает, что для ограниченного гостя профилировать код, который работает, как в предыдущем примере выглядит следующим образом:
private static void udate_color() {
UIHandler.post(new Runnable() {
@Override
public void run() {
ImageButton image_button = (ImageButton) findViewById(R.id.messageButton);
image_button.setBackground(res.getDrawable(R.drawable.green_border_grey_curved));
image_button.setBackground(res.getDrawable(R.drawable.green_border_grey_curved));
});
}
я не нашел каких-либо проблемы с ImageButton перекрашивания и андроид профилей пользователей. Кто-нибудь знает, как правильно решить эту проблему и почему это происходит?
Вы уверены, что обе ваши функции не вызывают в то же время? –
Что вы имеете в виду? Я понял, что вызов функции два раза меняет цвет, потому что если слушатель, который вызывает update_color(), выполняется два раза, цвет меняется. Вот почему я «решил» проблему, вызвав функцию setBackground дважды. –
Я имею в виду, что вы должны реализовать udate_color, уверены ли вы, что оба они не вызываются? –