ActivityNotFoundException(是,此活动在AndroidManifest.xml中声明)

时间:2011-06-14 19:02:06

标签: android android-manifest preferenceactivity library-project

我发现一些线程报告了类似的问题,但none of them确实提供了我尚未尝试过的内容。

无辜的​​这样的电话:

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

5 个答案:

答案 0 :(得分:14)

我刚解决了这个问题。

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

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

事实上,我完全删除了图书馆项目MyEditPreferences中对AndroidManifest.xml的任何引用,它仍然可以使用。

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

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

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

答案 1 :(得分:1)

也许这会有用吗?

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

答案 2 :(得分:0)

如果你使用知识产权包中包含的类(设置,首选项,活动......),你需要把它放在:

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

如果你没有输入“name_of_your_package”,编译器会认为你是在引用android包中的类(android。*)。

答案 3 :(得分:-1)

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

import java.util.prefs.Preferences;

答案 4 :(得分:-2)

只需检查清单中是否存在IDE未指出的错误。