Android Studio中找不到默认活动。

92

我刚刚升级到Android Studio 0.2.8,当我尝试编辑运行配置时,出现了一个错误提示:“找不到默认活动”。

启动Android Studio时,我收到了这个错误提示:“只允许从事件分派线程访问”。

我正在使用的活动是片段活动。

到目前为止,我已经尝试了重建和无效缓存/重新启动。但两者都没有用。

请告诉我如何解决这个问题。


可能是[错误:未找到默认活动]的重复问题(链接:https://dev59.com/K2Uo5IYBdhLWcg3wtRUx)。 - Sky Kelsey
29个回答

51

你是否已将ACTION_MAIN意图过滤器添加到主活动中?如果没有添加,Android 将不知道要启动哪个活动作为主活动。

例如:

<intent-filter>
      <action android:name="android.intent.action.MAIN"/>
      <action android:name="com.package.name.MyActivity"/>
      <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

1
是的,已经解决了。我通过使用Oracle JDK而不是OpenJDK来修复了“仅允许从事件分派线程访问”的问题。但默认活动仍然缺失。 - Vipassana Vijayarangan
5
如果所有的<intent-filter>元素都在与您命名空间中的MyActivity对应的<activity>元素内部,则可以省略名称为“com.package.name.MyActivity”的部分。 - Xavi Montero
哈哈,我重命名了一个名为Filter的类,包括所有名为filter的变量,显然Android Studio决定包含AndroidManifest.xml<intent-*filter*>。这个答案让我再次检查了我的AndroidManifest.xml,帮助我找到了错误=) - Stephan Henningsen
这个在哪里有记录啊?我找不到了... - mirabilos

45
在Android Studio中,右键单击项目并选择打开模块设置。然后进入您的模块中的源代码选项卡,在其中找到src文件夹,右键单击并将其标记为源代码(蓝色)。 编辑:在较新版本的Android Studio中没有源代码选项卡,但是您可以编辑build.gradle文件: https://dev59.com/rmMk5IYBdhLWcg3w0RCU#22028681 (感谢Josh的评论)

27
我如何在 0.6.1 版本中完成这个操作?我没有看到 Sources 选项卡。 - lschlessinger
7
我也不是。这里涉及到属性、签名、渠道、构建类型和依赖。 - Junior Mayhé
4
我没有“Sources”选项卡,所以我改为编辑build.gradle文件:https://dev59.com/rmMk5IYBdhLWcg3w0RCU#22028681 - Josh
2
完美!感谢帮助 @Micer。 各位,在您的IntelliJ项目中按下'F4',然后会出现三个标签(Sources、Paths、Dependencies),转到'Sources'标签并检查树状结构中的'src'文件夹是否为蓝色。如果不是,请按'Alt+S'将源文件夹包含在项目结构中。 - Ryan Amaral
1
我曾经遇到过同样的问题。我只是重新启动了Android Studio,然后问题就解决了。虽然这不是一个逻辑上的答案,但它解决了我的问题。 - user1154390
显示剩余4条评论

33

我在将一个项目导入Android Studio时遇到了同样的问题,可能是因为该项目是在比我电脑上当前安装的Android Studio版本早的版本上开发的。

解决方法很简单,只需选择:

文件 -> 清除缓存/重启...

然后选择清除并重启即可。


1
非常感谢 @syntagma,经过数小时的努力,您的指导解决了我的问题。 - MMG

17
如果您没有选项卡并且是从一个空活动开始尝试,请尝试以下方法。 以下是一个示例代码示例:

<application android:label="@string/app_name">

    <activity android:name=".HelloActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>

</application>

现在前往您的AndroidManifest.xml文件。接下来从此代码复制意图过滤器。仔细查看您的清单文件,并将意图过滤器粘贴到代码上面的确切位置(在清单的.yourActivityName>部分之后)。我希望这会有所帮助。


14
如果在执行了无效化缓存并重新启动之后,编辑运行配置仍然出现“找不到默认活动”错误,请尝试删除Settings/Preferences文件夹:
/< USER_HOME_DIR >/.AndroidStudioPreview3.2

或在Mac上:

/Users/<USER_NAME>/Library/Preferences/.AndroidStudioPreview3.2

如果您已经重命名了包或者从版本控制中切换了分支,有时候Android Studio无法识别所有文件并且会出现混乱。对我而言唯一有效的解决方案是关闭AS,然后删除.AndroidStudioXY(其中XY是您的版本号),正如@Phileo99所指出的那样。 - Zbarcea Christian
1
你救了我的命!只需执行此操作 /<USER_HOME_DIR>/.AndroidStudioPreview3.2 - nadafafif
如果我的回答对你有所帮助,请点赞支持我,不用客气 @nadafafif! - Phileo99
@Phileo99 已经完成了。我忍不住去做了。 :) 干杯。继续像这样帮助别人。 - nadafafif
那有所帮助,但请注意你将下载许多东西。它需要约15分钟来下载。 - Valgaal

10
当我点击“打开模块设置”时,没有“源代码”标签页,我认为这是因为较新版本的Android Studio将其删除了(我使用的是0.8.14版)。所以我只好做以下操作: 将以下行添加到android { ... }块内的build.gradle文件中: android { ... sourceSets { main.java.srcDirs += 'src/main/<YOUR DIRECTORY>' } } 编辑完文件后,单击 工具 > Android > 与Gradle文件同步项目
感谢此答案此评论

9
以下是我用过的方法。从“运行 ->编辑配置”中进行设置。 在此输入图片描述

我建议不要使用这个解决方案,因为它会导致应用程序在三星Galaxy S5 Neo和三星Galaxy S6的可用应用程序列表中不再显示。 - Teun Kooijman

3

我的问题最终归结于一个额外的错误,有时会弹出以下提示:

Manifest Merger 失败,Android Studio 出现多个错误

实际上导致问题的原因是有多个清单文件(一个调试清单和一个新导入的模块中的清单),由于这个原因它们没有正确合并。在查看这个答案后,我能够分析合并后的清单文件,找到问题的原因并解决了它。


3

图片描述在此输入

按下应用-->编辑配置
然后将启动中的值更改为"无"


这是一种解决方法。此过程将安装应用程序,但不会自动启动该应用程序。 - Vikrant_Dev

2
这种情况发生在我将清单文件中的路径大写时。更改为:
<intent-filter>
    <action android:name="ANDROID.INTENT.ACTION.MAIN"/>
    <category android:name="ANDROID.INTENT.CATEGORY.LAUNCHER"/>
</intent-filter>

为了

<intent-filter>
  <action android:name="android.intent.action.MAIN"/>
  <category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>

问题已经解决了


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接