可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
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.