【问题标题】:Cannot Launch Activity in Android Library Module无法在 Android 库模块中启动 Activity
【发布时间】:2015-01-14 14:52:24
【问题描述】:

在我的 Android 应用项目中,我添加了一个模块,其中包含一个名为“SampleDataMenuActivity”的活动。此活动没有什么特别之处 - 它是使用 Android Studio 中的“新模块”->“Android 库”对话框添加的,并包含 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>

在app的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 )

我错过了什么?

【问题讨论】:

    标签: android android-activity module android-studio


    【解决方案1】:

    我发现了错误,也许我应该删除这个问题。但由于它被赞成,其他人可能会对这个答案感兴趣:

    清单应说明:

    <activity
        android:name="com.sample.sampledata.SampleDataMenuActivity" >
        <intent-filter>
            <action android:name="com.sample.sampledata.SampleDataMenuActivity" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
    

    【讨论】:

    • 为什么里面有?只是好奇。我有点想做同样的事情。
    • 可能有更多有资格的人来回答这个问题,但我会尝试一下:当使用startActivity(new Intent("&lt;action_name&gt;") 启动活动时,应用会查找与操作名称匹配的意图,然后启动相应的活动。为了启动一个活动,你可以给它起任何你想要的名字,但据我了解,使用活动类的完整路径被认为是一种很好的做法,并使你的代码更具可读性和可维护性..
    • 上述答案和问题中的代码看起来很相似。那有什么区别呢?
    • Category android.intent.category.DEFAULT 通常用于启动活动的意图。问题中给出的活动名称没有意义。这只是一个错字或复制/粘贴问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-07
    • 2019-12-01
    • 2015-05-01
    • 1970-01-01
    相关资源
    最近更新 更多