I found a few threads reporting a similar problem but none of them really offers something that I haven't tried already.
An innocent such call:
mActivity.startActivity(new Intent(mActivity, MyEditPreferences.class));
with the following in AndroidManifest.xml:
<application>
<activity android:name="MyActivityLib" />
<activity android:name="com.example.baseapp.MyEditPreferences" android:label="@string/app_name">
</activity>
</application>
Triggers the following exception:
06-14 14:06:50.297: ERROR/AndroidRuntime(9272):
android.content.ActivityNotFoundException: Unable to find explicit activity class
{com.example.baseapp.paypal/com.example.baseapp.MyEditPreferences};
have you declared this activity in your AndroidManifest.xml?
The things is, this code used to work flawlessly before I changed it from a monolithic application project to a 2-part project that is comprised from a Library Project and an Application Project.
The AndroidManifest.xml is the one in the library project.
What do I need to do eliminate this ActivityNotFoundException
?
I just solved the problem.
All I had to do was add the FQN to the Application project's AndroidManifest.xml
:
<activity android:name="com.example.baseapp.MyEditPreferences"
android:label="com.example.baseapp.MyActivityLib:string/app_name">
</activity>
In fact, I removed any reference to MyEditPreferences
in the Library project's AndroidManifest.xml
completely and it still works.
It also works with the original startActivity 1-line statement:
mActivity.startActivity(new Intent(mActivity, MyEditPreferences.class));
Conclusion: It's the application's AndroidManifest.xml
that matters, not the library's.