Есть ли способ проверить метку переменной в Java? - PullRequest
0 голосов
/ 25 мая 2011
int foo = 0xff;

String label = getNameOfFoo(foo);

System.out.println(label);// this should print "foo";

private String getNameOfFoo(int n){
  String ret;

  ///WHAT COULD I DO HERE TO MAKE THIS A REALITY?

  return ret;
}

Прежде чем ты прыгнешь на меня с "Почему, во имя Бога, тебе это нужно ?!" Я скажу, что моя цель - обойти механизм Android, позволяющий идентифицировать мои идентификаторы View как строки (т. Е. "Id = @ + id / user_name"), но вернуть его в моем коде как int user_name = R.id.user_name. Это прекрасно работает, когда я знаю, что есть ярлык "user_name". Но идет, чтобы обосрать, когда я не Я пытаюсь написать приложение с поддержкой скинов, которое может содержать или не содержать в XML все виды вещей, и мне нужен способ проверки идентификаторов в виде строк.

Ответы [ 3 ]

2 голосов
/ 25 мая 2011

То, что вы описали, не может быть сделано в Java. Не могли бы вы объяснить свою настоящую проблему немного подробнее? Я сделал приложение для Android с поддержкой скинов.

Изменить: Поможет ли вам, если вы можете перейти от имени к идентификатору вместо? В этом случае вы можете посмотреть на эту тему: Как получить идентификатор ресурса изображения, если я знаю его имя?

Однако я так не решил, и не вижу в этом необходимости.

1 голос
/ 25 мая 2011

Вы можете использовать Context.getResources () для этого.

int resID = getResources().getIdentifier("label_name", "drawable", "com.test.app");

И возвращенный resID.Если это 0, то ярлык не найден.Читайте здесь для подробнее о ресурсах .

0 голосов
/ 26 мая 2011

У меня есть приложение, которое можно скинуть; пользователь может выбрать один из набора доступных для рисования ресурсов для использования в качестве фона, и я не хотел жестко кодировать набор для рисования. Что я сделал, так это назвал id каждого объекта рисования, используя идентифицируемый шаблон, что-то вроде «background_X», где «background_» был исправлен, а X мог быть в произвольной форме.

Затем я использовал отражение в классе R, чтобы определить во время выполнения каждый из возможных фонов, и представил их пользователю по идентификатору ресурса. Когда пользователь сделал свой выбор, я сохранил отраженное имя в sharedPrefs, а не ID ресурса ... это позволило обновлениям (которые потенциально могли бы изменить нумерацию каждого идентификатора), чтобы сохранить настройки пользователя.

Отражение также можно использовать для преобразования числа (foo) в имя, но вам нужно пройтись по всему в R. [attr | drawable | id | и т.д.]. *, Чтобы найти совпадение, и если вы добавляете ресурсы к категории вы рискуете изменить значения.

...