Android: доступ к ресурсам без ссылки на действие или контекст - PullRequest
7 голосов
/ 23 сентября 2011

Я публикую этот вопрос в надежде, что смогу получить какой-то окончательный ответ.

Действительно ли невозможно получить доступ к ресурсам без активности или контекстной ссылки. Передача таких ссылок, когда все, что требуется, - это получить доступ к некоторым значениям, активам или строкам, которые не имеют ничего общего с пользовательским интерфейсом, что создает слишком сложный код.

Плюс все эти потенциальные ссылки.

Кроме того, это полностью разрушает различные шаблоны проектирования, такие как синглтоны, что требует предоставления параметров при получении экземпляра.

Установка статической ссылки

Так есть ли способ или все сообщество просто живет с этой проблемой.

Ответы [ 2 ]

9 голосов
/ 23 сентября 2011

Ваши ресурсы связаны с контекстом, это факт, и вы не можете это изменить.

Вот что вы можете сделать:

Расширьте Application, получите контекст приложения и используйте его в качестве статического помощника.

public class App extends Application {

    private static Context mContext;

    public static Resources getResources() {
        return mContext.getResources();
    }

    public void onCreate() {
        super.onCreate();
        mContext = getApplicationContext();
    }
}

Ваш манифест:

<application
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:name="your.package.path.to.App">
0 голосов
/ 23 сентября 2011

Сделайте ваш Application класс синглтоном и используйте его. Это Context. Все ресурсы привязаны к вашему приложению, поэтому вам нужна ссылка Context. Вы можете предварительно загрузить строки и т. Д. В одноэлементный класс, если не хотите загружать их динамически.

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