2016-05-02 8 views
0

У меня есть планшет 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 перекрашивания и андроид профилей пользователей. Кто-нибудь знает, как правильно решить эту проблему и почему это происходит?

+0

Вы уверены, что обе ваши функции не вызывают в то же время? –

+0

Что вы имеете в виду? Я понял, что вызов функции два раза меняет цвет, потому что если слушатель, который вызывает update_color(), выполняется два раза, цвет меняется. Вот почему я «решил» проблему, вызвав функцию setBackground дважды. –

+0

Я имею в виду, что вы должны реализовать udate_color, уверены ли вы, что оба они не вызываются? –

ответ

0

Я нашел решение, проблема была в файле макета xml; в этом файле я определил начальное значение цвета. Удаление этой части из xml-файла и установка программно цвет решил проблему.