Intereting Posts
Ошибка сборки Gradle – исключение NullPointerException, заданное при выполнении задачи градиента app: compileDebugJava Как изменить фокус на два фрагмента на экране? Как заставить переполнение меню на Android-панели? Отправить и получить IQ XMPP ASMACK Android Как предоставить системные разрешения для моего приложения для Android? Android: как загружать и отображать большие изображения (размер A0) – например, карта google? Установка Зависимости, не разрешенные в ADT r20 Как получить текущее местоположение GPS программно в Android? Приложение для генератора траекторий для Android Вызов триггера касания на iOS / android Не удалось разрешить суперкласс класса Landroid / support / v4 / app / FragmentActivity Рисование текста внутри дуги с использованием холста Android Studio: установка завершилась неудачно, поскольку APK не был подписан Дважды нажмите кнопку Как отображать двойные кавычки (") Символ в текстовом виде Android

Хранить шестнадцатеричное значение (0x45E213) в целочисленном

В моем приложении я использовал конвертер для создания из трех значений> RGB-цветов значения Hex. Я использую это, чтобы установить свой фон градиента в моем приложении во время выполнения.

Теперь это следующая проблема. Результатом конвертера является (String) #45E213 , и это не может быть сохранено в целое число. Но когда вы создаете целое число,

  int hex = 0x45E213; 

Он работает правильно, и это не дает ошибок.

Теперь я знал об этом, я заменил # на 0x и попробовал преобразовать его из String в Integer.

  int hexToInt = new Integer("0x45E213").intValue(); 

Но теперь я получаю numberFormatException , потому что при преобразовании он не согласен с символом E ? Как я могу это решить? Поскольку я действительно нуждаюсь в нем, поскольку Integer или Java / Eclipse не будут использовать его в своем методе.

http://docs.oracle.com/javase/6/docs/api/java/lang/Integer.html

Конструктор Integer со строкой ведет себя так же, как parseInt с radix 10. Предположительно, вы хотите String.parseInt с radix 16.

 String.parseInt("45E213", 16) 

Или отрезать 0x

 Integer.parseInt("0x45E213".substring(2), 16); 

или

 Integer.parseInt("0x45E213".replace("0x",""), 16); 

Здесь может быть полезен менее известный Integer.decode (String). Обратите внимание, что это также приведет к тому, что ведущие нули будут восьмыми, что вам может и не нужно, но если вы после чего-то дешево и весело …

 int withHash = Integer.decode("#45E213"); System.out.println(Integer.toHexString(withHash)); int withZeroX = Integer.decode("0x45E213"); System.out.println(Integer.toHexString(withZeroX)); 

Вывод

 45e213 45e213 

Этот метод принимает вашу строку, вы можете использовать Color.parseColor(String) но вам нужно заменить префикс 0x на #