我在不同的包中有不同的活动,
假设我有两个包 - > com.pack1 - > com.pack2
我在pack1中有一个Activity,想要在pack2中调用另一个Activity。我将如何使用意图显示
21:19:10.405: W/System.err(7578): android.content.ActivityNotFoundException: Unable to find explicit activity class have you declared this activity in your AndroidManifest.xml?
答案 0 :(得分:2)
Intent i = new Intent("android.intent.action.MAIN");
i.setComponent(new ComponentName("com.mypkg.mystff","com.mypkg.mystuff.MyClass"));
其他答案也是正确的。但是,这可以在设备的任何位置使用。
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
将其添加到xml的部分
答案 1 :(得分:1)
请阅读错误。
“您是否在AndroidManifest.xml中声明了此活动”。 pakage不会出问题对于一个活动另一个活动。在AndroidManifest中检查AndroidManifest.xml中的活动是否为declear。
我认为问题就是出于这个原因。
感谢。
答案 2 :(得分:1)
您需要确保在 AndroidManifest.xml 中声明活动,否则您无法使用它。
示例:
<activity
android:name="com.yourpackage.YourActivity"
android:launchMode="singleTop"
android:configChanges="orientation"
>
</activity>
答案 3 :(得分:1)
好的,所以有两个部分可以协同工作来定义Activity
位置。首先,package
属性 - 下面是“com.flipagain2”
还有android:name
属性,例如.FlipAgain2Activity.
因此,这意味着当Android查找您的活动时,它正在查看
com.flipagain2.FlipAgain2Activity.
有意义吗?只需将这两件事结合起来。
所以,你想要两个包中的活动。
更改第二个(一个不起作用的“看起来像这样:
<activity android:name="com.package2.CaptureActivity" >
<intent-filter>
<action android:name="com.google.zxing.client.android.CaptureActivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
你看到我改变了什么吗?保留第一个Activity
声明相同,但更改第二个android:name=
以匹配包括包的完全限定名称。使用这种方法,每个Activity都可以在不同的包中。
答案 4 :(得分:1)
通常,活动对其包裹是私密的。您不能在另一个包中启动活动,除非该活动明确地导出&#34; (即:其他应用程序已知)。将此添加到com.pack2中的FlipAgain2Activity的清单:
android:exported="true"