Java 从一个包到另一个包启动活动
我在不同的包裹里有不同的活动 假设我有两个包裹 ->com.pack1 ->com.pack2 我在pack1中有一个活动,想调用pack2中的另一个活动。我将如何做到这一点,使用意图显示Java 从一个包到另一个包启动活动,java,android,android-activity,Java,Android,Android Activity,我在不同的包裹里有不同的活动 假设我有两个包裹 ->com.pack1 ->com.pack2 我在pack1中有一个活动,想调用pack2中的另一个活动。我将如何做到这一点,使用意图显示 21:19:10.405:W/System.err(7578):android.content.ActivityNotFoundException:找不到显式活动类您在AndroidManifest.xml中声明了此活动吗? 请阅读错误 “您是否在AndroidManifest.xml中声明了此活动?”。包装
21:19:10.405:W/System.err(7578):android.content.ActivityNotFoundException:找不到显式活动类您在AndroidManifest.xml中声明了此活动吗?
请阅读错误
“您是否在AndroidManifest.xml中声明了此活动?”。包装不会对一项活动和另一项活动造成问题。检查AndroidManifest.xml,确保活动在AndroidManifest中是declear
我认为问题的发生就是因为这个原因
谢谢。请阅读错误
“您是否在AndroidManifest.xml中声明了此活动?”。包装不会对一项活动和另一项活动造成问题。检查AndroidManifest.xml,确保活动在AndroidManifest中是declear
我认为问题的发生就是因为这个原因
谢谢。您需要确保在AndroidManifest.xml中声明活动,否则无法使用它 例如:
<activity
android:name="com.yourpackage.YourActivity"
android:launchMode="singleTop"
android:configChanges="orientation"
>
</activity>
您需要确保在AndroidManifest.xml中声明活动,否则无法使用它 例如:
<activity
android:name="com.yourpackage.YourActivity"
android:launchMode="singleTop"
android:configChanges="orientation"
>
</activity>
其他答案也是正确的。然而,这将在设备中的任何位置起作用
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
将其添加到xml的一部分
其他答案也是正确的。然而,这将在设备中的任何位置起作用
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
将此添加到xml的一部分确定,因此有两个部分共同定义
活动
位置。首先是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>
看到我更改的内容了吗?保持第一个
活动
声明不变,但更改第二个android:name=
以匹配包括包在内的完全限定名称。使用这种方法,每个活动都可以位于不同的包中。好的,因此有两个部分共同定义活动
location。首先是包
属性——它下面是“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>
您看到我更改的内容了吗?保持第一个
活动
声明不变,但更改第二个android:name=
以匹配包括包在内的完全限定名称。使用此方法,每个活动都可以位于不同的包中。通常活动对其包是私有的。您无法启动活动在另一个包中,除非该活动已明确“导出”(即:其他应用程序知道)。将此添加到com.pack2中FlipAgain2Activity的清单中:
android:exported="true"
通常情况下,活动对其包是私有的。除非明确“导出”了另一个包中的活动(即:向其他应用程序公开),否则无法启动该活动。请将此添加到com.pack2中FlipAgain2Activity的清单中:
android:exported="true"
发布manifest.xml,这就是问题所在。一旦发布,我(或其他人)可以向您显示有许多包声明。@edthird manifest文件:发布manifest.xml,这就是问题所在。一旦发布,我(或其他人)可以显示有许多包声明。@edthird清单文件:使用上述代码后,它不会显示任何错误或警告,但甚至不会加载活动,它显示以下内容
06-28 21:39:30.389:I/WindowManager(190):createSurface窗口{41b19380 Toast paused=false}:DRAW NOW PENDING
是否用软件包替换了软件包?是否调用了startActivity(i)
?哎呀!很抱歉忘记了,现在这样做之后,它会显示与上面相同的错误。我的Manifest.xml文件:如果我在使用上述代码后包括我将有两个启动程序活动,它不会显示任何错误或警告,但它甚至不会加载活动,它会显示以下内容06-28 21:39:30.389:I/WindowManager(190):createSurface窗口{41b19380 Toast paused=false}:DRAW NOW PENDING
是否用包替换包?是否调用了startActivity(i)
?哎呀!很抱歉忘记了,现在这样做之后,它显示了与上面相同的错误。我的Manifest.xml文件:如果我包括这一点,我将有两个启动器活动实现上面显示的06-28 21:52:33.694:E/AndroidRuntime(8324):java.lang.RuntimeException:无法恢复活动{com.flipagain2/com.google.zxing.client.android.CaptureActivity}:android.content.res.Resources$NotFoundException:String resource ID#0x7f090039
实现上面显示的06-28 21:52:33.694:E/AndroidRuntime(8324):java.lang.RuntimeException:无法恢复活动{com.flipagain2/com.google.zxing.client.android.CaptureActivity}:android.content.res.Resources$NotFoundException:String resource ID#0x7f090039
实现了上述代码