Организация и передача ресурсов между действиями в Android - PullRequest
1 голос
/ 24 сентября 2019

Я новичок в android dev, и у меня есть вопрос о ресурсах.

Я хотел бы иметь 2 актива: 1 с кнопками, которые приведут ко второму действию.

Во втором упражнении будет фиксированный текст и переменный текст, в зависимости от того, какая кнопка была нажата на занятии 1.

Я подумал, что мог бы передать ресурс в намерении.

Таким образом, моя идея заключалась в том, чтобы создать 1 XML-файл для каждой кнопки со всей информацией, необходимой в Деятельности 2, чтобы соответствующим образом обновить текст.

Теперь я хочу организовать свои ресурсы, чтобы им было легче управлять (особенно когдаприложение станет больше).

Я бы хотел организовать свои ресурсы так:

res
  drawable
  font
  layout
  mipmap
  values
    heroes
      hero1.xml
      hero2.xml
      hero3.xml

и иметь возможность вызывать свои намерения так:

intent.putExtra("heroData", R.values.heroes.hero1)

если я нажму на кнопку «Герой 1» в основной деятельности.Затем, начиная с упражнения 2, я смогу получить информацию о hero1 (hp, armor, etc ...)

К сожалению, кажется, что Android требователен к тому, как создается R, и выне могу просто добавить каталоги, которые будут доступны через R.values.xxxx

Это неправильный подход, или я что-то пропустил?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 24 сентября 2019

К сожалению, вы не можете создавать подкаталоги в пределах значений.Как уже упоминалось, вы можете создавать явные файлы ресурсов, которые могут служить вашей файловой организацией (res / values ​​/ heroes1.xml, res / values ​​/ arms1.xml и т. Д.).

0 голосов
/ 24 сентября 2019

Пожалуйста, обновите понимание ресурсов на основе этой компактной статьи:

https://developer.android.com/guide/topics/resources/providing-resources

Короче говоря, вы не должны использовать шаблон values ​​/ xyz / abc.xml.Если это действительно необходимо, вы можете использовать значения / abc1.xml, values ​​/ abc2.xml (не обязательно values ​​/ strings.xml).

Кроме того, это не будет работать intent.putExtra("heroData", R.values.heroes.hero1).Вы можете получить доступ к любому ресурсу в любом месте внутри приложения, предполагая, что контекст доступен.Нет необходимости пытаться передать файл ресурсов куда-либо.

PS: «Настоящая проблема в том, что программисты потратили слишком много времени, беспокоясь об эффективности в неправильных местах и ​​в неподходящее время; преждевременная оптимизация - кореньвсего зла (или, по крайней мере, большей его части) в программировании "(https://en.wikiquote.org/wiki/Donald_Knuth)

...