2017-02-03 5 views
0

Я узнал из this вопрос о том, что ресурсы глобально доступны в проекте Android Studio.Можно ли разделить доступ к ресурсам в Android Studio

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

Есть ли способ разрешить активности для доступа к идентификаторам только из соответствующего макета?

например: У меня есть MainActivity.java, activity_main.xml, Main2Activity.java, activity_main2.xml. не

Я хотел бы ограничить ресурсы (в основном, IDS), доступные по MainActivity.java в activity_main.xml (так что нет доступа к ресурсам из activity_main2.xml)

ответ

0

Нет нет никакого способа сделать это. Вы можете иметь набор источников и ресурсов на основе вариантов сборки, но не можете связывать отдельные действия с файлами ресурсов. Но зачем вам это нужно. С хорошим соглашением об именах было бы довольно легко соединить эти два, и макет будет привязан к действию, только вы используете его в качестве аргумента для метода setContentView.

+0

Благодарим за ваш ответ. Могу ли я попросить вас уточнить, что вы подразумеваете под «макет, привязанный к действию, только вы используете его в качестве аргумента для метода setContentViewmethod»? Поскольку вы можете видеть на экране снимок [здесь] (http://stackoverflow.com/questions/42009108/android-studio-is-it-normal-for-r-id-to-access-every-components) Я использовал метод setContentView для связывания макета, но он все еще предлагает мне ресурс из другого макета. –

+0

Да, это потому, что во время процесса сборки всем ресурсам назначается числовой идентификатор для более быстрого доступа из кода. Процесс сборки генерирует файл с именем «R.java», содержащий все идентификаторы ресурса. Поэтому, когда вы ссылаетесь на ресурс из вашего кода, вы обычно используете 'R.id.someview'. Поэтому, хотя вы можете ссылаться на идентификатор ресурса, который не является частью вашего макета, вы не получите ошибку компиляции, но он не будет работать во время выполнения. Поэтому нет никакого смысла. Мне неизвестен какой-либо статический инструмент проверки компиляции, который вызывает предупреждение в приведенном выше случае. – Dibzmania