ActivityNotFoundException (YES, this activity is declared in AndroidManifest.xml)

an00b picture an00b · Jun 14, 2011 · Viewed 13.6k times · Source

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?

Answer

an00b picture an00b · Jun 14, 2011

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.