这是一个场景:我在同一个项目中有 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等 还有更多。
如果您遇到同样的问题,或者有潜在的解决方案,请不要随便回复!
答案 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>
如上所述。