10

我发现一些线程报告了类似的问题,但它们都没有真正提供我还没有尝试过的东西。

一个无辜的这样的电话:

mActivity.startActivity(new Intent(mActivity, MyEditPreferences.class));

在 AndroidManifest.xml 中包含以下内容:

 <application>
    <activity android:name="MyActivityLib" />
    <activity android:name="com.example.baseapp.MyEditPreferences" android:label="@string/app_name">
    </activity>
 </application>

触发以下异常:

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?

问题是,在我将它从一个单一的应用程序项目更改为一个由库项目和一个应用程序项目组成的两部分项目之前,这段代码曾经完美地工作过。

AndroidManifest.xml 是项目中的一个。

我需要做什么来消除这个ActivityNotFoundException

4

5 回答 5

14

我刚刚解决了这个问题。

我所要做的就是将 FQN 添加到应用程序项目的AndroidManifest.xml

<activity android:name="com.example.baseapp.MyEditPreferences"
          android:label="com.example.baseapp.MyActivityLib:string/app_name">
</activity>

事实上,我完全删除MyEditPreferencesLibrary项目中的任何引用AndroidManifest.xml,它仍然有效。

它也适用于原始的 startActivity 1 行语句:

mActivity.startActivity(new Intent(mActivity, MyEditPreferences.class));

结论:重要的是应用程序AndroidManifest.xml,而不是库。

于 2011-06-14T20:04:31.550 回答
1

也许这会起作用?

Intent mIntent = new Intent();
mIntent.setClassName(mActivity, "com.example.baseapp.MyEditPreferences");
mActivity.startActivity(mIntent);
于 2011-06-14T19:29:47.330 回答
0

如果您使用名称包含在 android 包中的类(设置、首选项、活动...),则需要输入:

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

如果你不放“name_of_your_package”,编译器会认为你引用的是android包(android.*)中的类。

于 2013-06-14T09:57:27.550 回答
-1

我知道这是一个非常古老的线程,但我也遇到了同样的问题。就我而言,我所要做的就是删除一个虚假的

import java.util.prefs.Preferences;
于 2013-05-14T03:47:53.220 回答
-2

只需检查清单中的 IDE 未指出的错误。

于 2016-03-07T21:43:07.750 回答