【问题标题】:ActivityNotFoundException (YES, this activity is declared in AndroidManifest.xml)ActivityNotFoundException(是,此活动在 AndroidManifest.xml 中声明)
【发布时间】:2011-09-14 23:20:26
【问题描述】:

我发现一些线程报告了类似的问题,但 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 是 library 项目中的一个。

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

【问题讨论】:

  • 什么 com.example.baseapp.paypal??你在使用一些贝宝库吗?
  • @Ravi Vyas 是的,我是。这是我将单体应用程序项目拆分为两部分项目的主要原因:所有 Android 市场通用的库和为每个 Android 市场或应用商店定制的小型应用程序项目(活动类派生自库活动类) .你注意到什么了吗?
  • 我不相信你可以创建一个意图来调用不同包中的类。
  • 除了您出色的 404 代表分数之外,我似乎找不到任何给出的信息 :-(
  • @Maximus 为什么?到目前为止,我设法解决了由于将单体应用程序项目分解为两部分项目而产生的所有问题。有时它涉及像duplicating all assets 这样的丑陋解决方法,但它至少可以工作。如果您能解释原因,我可能会想出一个解决方法。 :)

标签: android android-manifest preferenceactivity library-project


【解决方案1】:

我刚刚解决了这个问题。

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

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

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

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

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

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

【讨论】:

【解决方案2】:

也许这会起作用?

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

【讨论】:

  • 感谢您的建议并 +1。我刚刚尝试过,但没有帮助。我还发现一个线程描述了一个非常相似的问题:stackoverflow.com/questions/5363548/… FQN 方法对他有用,但并没有为我解决问题。还有其他想法吗?
【解决方案3】:

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

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

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

【讨论】:

    【解决方案4】:

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

    import java.util.prefs.Preferences;
    

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-14
        • 2015-03-29
        • 1970-01-01
        • 1970-01-01
        • 2019-02-27
        相关资源
        最近更新 更多