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

an0*_*00b 10 android preferenceactivity android-manifest library-project

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

一个无辜的这样的电话:

mActivity.startActivity(new Intent(mActivity, MyEditPreferences.class));
Run Code Online (Sandbox Code Playgroud)

在AndroidManifest.xml中使用以下内容:

 <application>
    <activity android:name="MyActivityLib" />
    <activity android:name="com.example.baseapp.MyEditPreferences" android:label="@string/app_name">
    </activity>
 </application>
Run Code Online (Sandbox Code Playgroud)

触发以下异常:

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?
Run Code Online (Sandbox Code Playgroud)

问题是,在将代码从单个应用程序项目更改为由库项目和应用程序项目组成的由两部分组成的项目之前,此代码用于完美地工作.

AndroidManifest.xml是项目中的一个.

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

an0*_*00b 14

我刚刚解决了这个问题.

我所要做的就是将FQN添加到Application项目中AndroidManifest.xml:

<activity android:name="com.example.baseapp.MyEditPreferences"
          android:label="com.example.baseapp.MyActivityLib:string/app_name">
</activity>
Run Code Online (Sandbox Code Playgroud)

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

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

mActivity.startActivity(new Intent(mActivity, MyEditPreferences.class));
Run Code Online (Sandbox Code Playgroud)

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