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

匿名 (未验证) 提交于 2019-12-03 02:51:02

问题:

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?

回答1:

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.



回答2:

Maybe this will work?

Intent mIntent = new Intent(); mIntent.setClassName(mActivity, "com.example.baseapp.MyEditPreferences"); mActivity.startActivity(mIntent);


回答3:

If you use classes which names are included in an android package (Settings, Preferences, Activity, ...), you will need to put this:

Intent i = new Intent(this, <name_of_your_package>.classname.class);

If you don't put "name_of_your_package", the compiler will think that you are refering to the class in android package (android.*).



回答4:

I know this is a very old thread, but I've just had the same problem. In my case all I had to do was to delete a spurious

import java.util.prefs.Preferences;


回答5:

Just check your manifest for errors that your IDE not pointed.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!