Подтвердить что ты не робот

Android: this.getApplication() возвращает указатель NULL

Я запускаю следующую строку в Activity, которая находится в одном приложении, но в другом пакете:

AppObject appObj = (AppObject)this.getApplication();
// FYI: AppObject is my extension class of Application.

Он возвращает только нулевой указатель, а когда я перехожу его в "основной" пакет и запускаю его оттуда, он возвращает ссылку на приложение, как ожидалось.

Я определил действие в своем AndroidManifest.xml с полным именем класса, так как он находится в другом пакете: <activity android:name="com.foo.bar.TestActivity"></activity>

Любые идеи о том, что я должен делать иначе?

Спасибо


Обновление:. Как было предложено в вопросе ниже android:name="AppObject", он уже находился в теге <application> AndroidManifest.xml

4b9b3361

Ответ 1

Очень важно вызвать getApllication() в методе onCreate(), а не в конструкторе.

Ответ 2

Тег приложения update необходимо добавить в AndroidManifest.xml с именем вашего класса, которое добавлено из приложения с соответствующим именем пакета.

<application android:name=".AppObject">


Согласно тегу Приложение google docs, базовый класс для тех, кто должен поддерживать состояние глобального приложения. Вы можете предоставить свою собственную реализацию, указав ее имя в своем теге AndroidManifest.xml, что приведет к тому, что этот класс будет создан для вас, когда будет создан процесс для вашего приложения/пакета.

здесь

Ответ 3

Просто запустите одно и то же, рефакторинг всего моего кода по-прежнему получил ту же проблему, заметил, что я устанавливаю локальную переменную mApplication в конструкторе, она должна идти в onCreate(), я думаю, что все объекты в манифесте может быть сконструирован сначала до getApplication(), поэтому вам нужно вызвать getApplication() в или после того, как был вызван onCreate(). Не переработал весь мой код обратно, чтобы увидеть, работает ли это для разных пакетов (вздох).

Ответ 4

Я думаю, что это не указатель null, но ваша функция, которую вы хотите использовать следующей в классе AppObject, может быть, неверна.