Почему нельзя получить доступ к ресурсам статическим способом? - PullRequest
7 голосов
/ 13 января 2012

Теперь я знаю, что если мне нужно получить ресурс в какой-то статической функции, мне нужно каким-то образом передать контекст или ресурсы контекста - параметром или статической переменной.Но почему это необходимо?Идентификаторы ресурсов доступны в статическом окружении, например R.string.some_my_stuff.Если я хочу системный ресурс, он также виден там через Resources.getSystem().getString(android.string.some_common_stuff).Но почему я не могу сделать что-то подобное, чтобы получить ресурс application ?Файлы ресурсов являются обычной статической частью источников.Ресурсы static и принадлежат приложению.Классы приложения принадлежат ему таким же образом, и я могу получить статический доступ к их статическим частям.

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

Боюсь, я не понимаю чего-то очень важного.

Пожалуйста, не повторяйте, что я не могу этого сделать.Я знаю это, на мою честь.Пожалуйста, объясните почему, или покажите мне путь ... Только это вылечит меня от моей грусти :-) Спасибо.

1 Ответ

3 голосов
/ 14 января 2012

Идентификаторы ресурсов уникальны для каждого приложения, они не уникальны для всех приложений (включая систему Android).Например, в разных приложениях могут быть две разные строки с одинаковым идентификатором, скажем, 42. Поэтому yon может статически обращаться только к одному приложению (каждый программист должен согласиться, какое из них является системой Android (нет выбора, это единственныйвсегда установлен)).Для всех остальных приложений вы должны быть в состоянии указать системе, к каким ресурсам приложения вы хотите получить доступ.Вы делаете это, используя контекст.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...