在我的Android应用项目中,我添加了一个模块,其中包含一个名为 "SampleDataMenuActivity" 的活动。这个活动没有什么特别之处 - 它是使用 Android Studio 中的 "New Module" -> "Android Library" 对话框添加的,并包括由 Android Studio 生成的 "Hello World" 代码。
该应用程序的 AndroidManifest.xml 包括(来自该模块):
<activity
android:name="com.sample.sampledata.SampleDataMenuActivity" >
<intent-filter>
<action android:name="android.intent.action.SampleDataMenuActivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
在应用程序的 build.gradle 文件中:
dependencies {
(...)
compile project(':sampledata')
}
在项目的settings.gradle文件中:include ':sampledata', ':app'
在我的应用程序的主活动中,我想使用以下方式导航到模块中的一个活动:
startActivity(new Intent("com.sample.sampledata.SampleDataMenuActivity"));
项目能够成功构建,但当我点击应该带我到这个模块中的活动的按钮时,它失败了,并报告:
android.content.ActivityNoFoundException: No Activity found to handle Intent ( act=com.sample.sampledata.SampleDataMenuActivity )
我错过了什么?
startActivity(new Intent("<action_name>")
启动一个活动时,应用程序会查找与操作名称匹配的意图,然后启动相应的活动。对于启动一个活动,你可以给它任何你想要的名称,但据我所知,使用活动类的完整路径被认为是良好的实践,可以使你的代码更易读和可维护。 - user3386180android.intent.category.DEFAULT
通常用于启动活动的意图。问题中给出的活动名称毫无意义,只是一个打字错误或复制/粘贴问题。 - user3386180