android.content.ActivityNotFoundException:无法找到显式活动类{};你有没有在AndroidManifest.xml中声明这个活动?

时间:2012-07-25 09:00:56

标签: android android-activity

这是一个场景:我在同一个项目中有 2个不同的包。 当我尝试从包 com.stable.app ActivityA 启动víaindow ActivityB(在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>

我的代码是:

final Intent intent = new Intent();                
intent.setClassName("com.stable.app.in", "com.stable.app.in.Principal");
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
startActivity(intent);

我在其他主题中尝试过很多建议。那些是: 给清单包装的整个路线。 试图切断MAIN,LAUNCHER等 还有更多。

如果您遇到同样的问题,或者有潜在的解决方案,请不要随便回复!

2 个答案:

答案 0 :(得分:1)

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

final Intent intent = new Intent(this, ActivityB.class);
startActivity(intent);

这种方式更短,更重要,您不会将活动名称用作字符串。这样,当您在IDE中重构活动类名称时,它也可以更改代码。使用字符串名称时,大多数IDE都不会更改它。

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

答案 1 :(得分:0)

  

根据您的要求,您声明了多少个包裹   这取决于您的项目要求。你需要指定它   包含完整包名的清单文件中的活动名称。

     

假设在您的情况下,您有Principal是您的活动   com.stable.app.in。那么你需要在清单文件中   声明

<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>
  

如上所述。