I'm running the following line in an Activity, which is within the same application, but in a different package:
AppObject appObj = (AppObject)this.getApplication();
// FYI: AppObject is my extension class of Application.
It returns only a null pointer, while when I move it to the "main" package and run it from there it returns the application reference as expected.
I've defined the activity in my AndroidManifest.xml with the full qualified class name, since it is in another package: <activity android:name="com.foo.bar.TestActivity"></activity>
Update: As suggested in a question below android:name="AppObject"
was already in the <application>
tag of the AndroidManifest.xml
It's important to call getApplication()
in the activity's onCreate()
method, not in the constructor.
You need the update application tag to AndroidManifest.xml with your class name, which is extended from Application, with proper package name.
<application android:name=".AppObject">
As per Application tag google docs, Base class for those who need to maintain global application state. You can provide your own implementation by specifying its name in your AndroidManifest.xml's tag, which will cause that class to be instantiated for you when the process for your application/package is created.
here
Just run into the same thing, having refactored all my code still got the same issue, noticed that I was setting the local mApplication
variable in the constructor, it should go in the onCreate()
, I think all the objects in the manifest may be constructed first before getApplication()
is setup so you need to call getApplication()
in or after onCreate()
has been called. Haven't refactored all my code back again to see if this works for different packages (sigh).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With