#android #constructor #android-manifest
#Android #constructor #android-манифест
Вопрос:
В моем приложении для Android есть класс, который подклассирует объект AndroidApplication. В документах говорится:
public void onCreate ()
Поскольку: API уровня 1 вызывается при запуске приложения, до создания любых других объектов приложения. Реализации должны быть как можно более быстрыми (например, с использованием отложенной инициализации состояния), поскольку время, затрачиваемое на выполнение этой функции, напрямую влияет на производительность запуска первого действия, службы или получателя в процессе. Если вы переопределите этот метод, обязательно
вызовите super.onCreate().
Я установил точку останова в конструкторе моего подкласса, и когда я запускаю свое приложение, она никогда не достигается. Естественно, когда я вызываю метод getInstance() подкласса из другого кода, он возвращает NULL, поскольку переменная экземпляра (должна быть) инициализирована при вызове конструктора.
Кто-нибудь может сказать мне, что не так? Я бы предположил из документов, что мне не нужно самому создавать экземпляр подкласса AndroidApplication, или я должен? Должен ли я каким-то образом изменить свой файл манифеста, чтобы добавить подкласс AndroidApplication, и если да, то каким образом?
— roschler
Комментарии:
1. Не могли бы вы показать свой код?
2. Также вы объявили свой класс приложения в манифесте?
Ответ №1:
Я публикую ответ здесь для других. Да, вам нужно добавить имя подкласса объекта вашего приложения в манифест Android. Для пользователей Eclipse самый простой способ сделать это — открыть AndroidManifest.xml файл, выберите вкладку приложения в редакторе манифеста и используйте кнопку Обзор рядом с полем Имя, чтобы найти имя подкласса объекта приложения Android и выбрать его. Файл манифеста будет обновлен надлежащим образом для его регистрации. Я просто сделал это, и это сработало.
Комментарии:
1. Миллион благодарностей! Благодаря этому я заметил, что случайно поместил name= «MyApp» вместо android: name=»MyApp» в манифест, и мне было интересно, почему мой конструктор никогда не вызывался…
Ответ №2:
У меня была проблема с отсутствием . перед именем класса моего приложения. Должно быть: android:name=».MyApp»
поскольку класс MyApp находится в пакете, определенном в манифесте.