android.content.ActivityNotFoundException:找不到显式活动类{};您是否在AndroidManifest.xml中声明了此活动?

android.content.ActivityNotFoundException:找不到显式活动类{};您是否在AndroidManifest.xml中声明了此活动?,android,android-activity,Android,Android Activity,这是一个场景:我在同一个项目中有两个不同的包。 当我试图从packagecom.stable.app ActivityA启动vía intentActivityB(在com.stable.app.in中)时,我遇到了这个错误。我想我的舱单还行,但似乎是错的。我的舱单是: <activity android:name=".in.Principal"> <intent-filter> <action android:name="android.inten

这是一个场景:我在同一个项目中有两个不同的包。 当我试图从packagecom.stable.app ActivityA启动vía intentActivityB(在com.stable.app.in中)时,我遇到了这个错误。我想我的舱单还行,但似乎是错的。我的舱单是:

<activity android:name=".in.Principal">
   <intent-filter>
     <action android:name="android.intent.action.MAIN" />
     <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
</activity>
我尝试了很多其他主题的建议。这些是: 给出完整的包裹路径清单。 试着切断主管道、发射器等。 还有很多

如果你有同样的问题,或者有一个有效的解决方案,不要急着回答

根据您的要求,您申报了多少件包裹 这取决于您的项目需求。您需要指定 清单文件中的活动名称以及完整的程序包名称

假设在你的情况下,你的主体就是你的活动 com.stable.app.in。因此,在清单文件中,您需要 申报


如上所述


你让这有点复杂。如果要在项目中启动另一个活动,可以使用以下代码段:

final Intent intent = new Intent(this, ActivityB.class);
startActivity(intent);
这是一种更简短、更重要的方式,您不会将活动名称用作字符串。这样,当您重构IDE中的活动类名时,它也可以更改代码。当使用字符串名时,大多数IDE不会更改它


您还必须确保在清单文件中声明的活动是正确的。您不需要使用完整的类名,但是如果您使用
.in.Principal
请确保清单文件的包是
com.stable.app

将清单包名称更改为“com.stable.app”。您的活动A位于com.stable.app包下,而活动B位于com.stable.app.in包下。对吗,已经有解决方案了,下面评论道,谢谢!最后,我这样做了:最终意图=新意图(getApplicationContext(),Principal.class);感谢大家,Tim Roes,你是对的,我不得不将字符串名称更改为:final-Intent-Intent=new-Intent(getApplicationContext(),Principal.class);同样,导入com.stable.app.in.Principal仍然理解为什么它不能作为“字符串”工作:intent.setClassName(“com.stable.app.in”,“com.stable.app.in.Principal”);您应该已经删除了
setAction()
setCategory()
调用。您传递给intent的那些用于intent,也就是启动器用于启动应用程序的intent。所以你不应该把它们用于内部活动切换。(当您的清单文件是正确的时,它也应该与它们一起工作。)尝试了这么多之后,final-Intent-Intent=new-Intent(getApplicationContext(),Principal.class);工作。谢谢user1427871@user14278713个小时后,你的评论帮我弄明白了这一点。非常感谢。
<activity android:name="com.stable.app.in.Principal">
       <intent-filter>
         <action android:name="android.intent.action.MAIN" />
         <category android:name="android.intent.category.LAUNCHER" />
       </intent-filter>
</activity>
final Intent intent = new Intent(this, ActivityB.class);
startActivity(intent);