在Android Studio中找不到默认活动


93

我刚刚升级到Android Studio 0.2.8,尝试编辑运行配置时出现错误消息“找不到默认活动”。

当我启动Android Studio时,出现此错误“仅允许从事件分发线程进行访问”

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

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

请让我知道如何解决此问题。


Answers:


45

在Android Studio中,右键单击该项目,然后选择打开模块设置。然后转到模块中的“源”选项卡,找到src文件夹,右键单击它并将其标记为“源”(蓝色)。

编辑:更高版本的Android Studio中没有源选项卡,但您可以改为编辑build.gradle文件:https : //stackoverflow.com/a/22028681/1101730(感谢Josh的评论)


27
我如何在0.6.1中做到这一点?我没有看到“来源”标签。
lschlessinger 2014年

7
我也不。有属性,签名,风味,构建类型和依赖关系
Junior Mayh14年

4
我没有“来源”标签,所以我改编辑了build.gradle文件:stackoverflow.com/a/22028681
乔什(Josh)

2
完善!感谢您帮助@Micer。伙计们,在IntelliJ项目中按“ F4”,然后您有三个选项卡(“源”,“路径”,“依赖项”),转到“源”选项卡,并检查“ src”文件夹(在树形结构中)是否为蓝色。如果没有,请按“ Alt + S”将源文件夹包括在“项目结构”中。
Ryan Amaral 2014年

1
@IgorGanapolsky是的,似乎在更高版本的Android Studio中已删除了“源”选项卡。检查乔什的答案。
Micer 2015年

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
同样,"com.package.name.MyActivity"如果所有<intent-filter>元素都在<activity>与您的命名空间中的MyActivity相对应的元素内,则可以省略名称。
哈维·蒙特罗

呵呵,我重命名了一个名为class的类,Filter其中包括所有具名的变量,filter并且显然Android Studio决定包含AndroidManifest.xmland <intent-*filter*>。这个答案让我重新检查了一下,AndroidManifest.xml并帮助我找到了错误=)
Stephan Henningsen

这甚至在哪里记录?我找不到它…
mirabilos

32

将项目导入Android Studio时,我遇到了同样的问题,这可能是由于该项目是在比计算机上当前安装的Android Studio早期版本上开发的。

解决问题的方法只是选择:

File -> Invalidate Caches / Restart...

然后选择Invalidate and Restart


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

16

如果没有该标签,而您以空的活动开始,请尝试此操作。下面是一个示例代码示例:

<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>之后。)希望对您有所帮助。


13

如果即使执行后仍尝试编辑运行配置时仍然出现“找不到默认活动”错误,则:

使缓存无效并重新启动

然后尝试删除“设置/首选项”文件夹:

/< USER_HOME_DIR >/.AndroidStudioPreview3.2

或在Mac上:

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

如果您已重命名软件包或从版本控制中切换了分支,则有时Android Studio无法识别所有文件并弄乱了内容。对我有用的唯一解决方案是关闭AS,然后删除@ Phileo99指出的.AndroidStudioXY(其中XY是您的版本号)。
Zbarcea Christian

1
你救了我的命!只需执行此操作/ <USER_HOME_DIR>
/。AndroidStudioPreview3.2

不客气@nadafafif!如果有帮助,请评价我的答案。
Phileo99

@ Phileo99已经做到了。无法阻止自己这样做。:)干杯。继续那样帮助。
nadafafif

这有所帮助,但请注意,您将下载很多内容。下载大约花了15分钟
Valgaal,

10

当我单击“打开模块设置”时,没有“源”标签,因为新版本的Android Studio已将其删除(我使用的是0.8.14)。所以我不得不这样做:

将这些行添加到块build.gradle内的文件中android { ... }

android { ... sourceSets { main.java.srcDirs += 'src/main/<YOUR DIRECTORY>' } }

编辑文件后,点击工具> Android>与Gradle文件同步项目

归功于这个答案这个评论


9

以下为我做了把戏。从运行->编辑配置

在此处输入图片说明


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

3

我的问题归结为有时会弹出的另一个错误,指出

Manifest Merger failed with multiple errors in Android Studio

最终导致我出现问题的原因是存在多个清单(调试清单,以及我刚刚导入的新模块中的清单),并且由于这个原因它们无法正确合并。看到此答案后,我能够分析合并的清单并找到问题的原因并加以解决。


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>

它是固定的


你救了我的一天!谢谢
Siva Kumar

2

我今天遇到了同样的问题,正在这里寻找答案。

对我而言,不同之处在于昨天它运行良好,因此我认为这实际上不是配置问题,配置和Android Studio版本均未更改。

幸运的是,在尝试其他答案之前,我尝试重新启动Android Studio,幸运的是,该问题得以解决。

因此,对于所有遇到此问题的人:尝试尝试的第一件事是重新启动Android Studio,并且仅在不能解决问题的情况下,才在此处尝试其他答案。


2

我刚刚在Android Studio 1.5.1中遇到了相同的错误。才发现问题的根源。我不确定原因是人为错误还是IDE行为异常,但是关于此主题的现有StackOverflow问题似乎都没有显示任何有关此问题的信息,因此我认为我还是将其发布为答案。

对我来说,我的团队成员之一或IDE本身都更改了启动器活动清单条目,从而使它看起来像这样:

        <activity
            android:name="com.rhaebus.ui.activities.ActivitySplash"
            android:launchMode="singleInstance"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <id android:name="android.intent.id.LAUNCHER" />
            </intent-filter>
        </activity>

实际上,它看起来应该像这样:

        <activity android:name="com.rhaebus.ui.activities.ActivitySplash"
            android:launchMode="singleInstance"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" /> <!-- Change Here -->
            </intent-filter>
        </activity>

因此,请仔细检查清单中启动器活动的格式,以达到节省时间的目的。

希望这可以帮助。

编辑:我强烈建议人们不要采用建议在模块的配置选项内手动选择启动器活动的答案,因为这导致该应用程序不再显示在两个Samsung Galaxy S5的已安装应用程序列表中Neo和三星Galaxy S6(至少对我而言)。


2

在此处输入图片说明

应用程序->编辑配置
,然后在“无”启动中更改值


1

请确保清单中的包名称与您的主要活动相同


1
  1. 在Android Studio中,切换到“项目”透视图(而不是Android透视图)。

  2. 确保您的项目遵循gradle插件的默认结构(即project_dir / app / src / main / java ...

  3. 删除您看到的所有构建文件夹和子文件夹。

  4. 在工具栏中,单击生成->清理项目,然后单击生成->重建项目

  5. 尝试运行该项目。


1

通过转到“编辑配置”菜单(点按三次“ Shift”,键入“编辑配置”),然后将启动选项>启动更改为“无”,可以使Android Studio不抱怨。

我可能会添加一个包含说明的通用活动,以避免任何混乱。


这节省了我的时间
-Sayali

1

就我而言,当我从项目(Project / .ida)中删除.idea文件夹并再次重新打开Android Studio时,它可以工作。


对于我来说,删除.idea文件夹很有帮助,谢谢!为了澄清起见,所有扩展名为“ .iml”的文件都位于.idea文件夹中。请不要仅删除.iml文件,因为这可能导致其他错误!
Cordis Audax Agrinova

0
  1. 右键单击该项目,然后选择“打开模块设置”。
  2. 转到模块中的“源”选项卡。
  3. 找到您的src文件夹。
  4. 右键单击它并将其标记为Sources。

这解决了我的情况下的错误。


0

如果您将目录名(类结构)从com.dir.sample更改为com.dir.sample1,则此后不要忘记将com.dir.sample包更改为com.dir.sample1。


0

修改“ Workspace.xml”(按Ctrl + Shft + R进行搜索)

  1. 用包名称修改活动名称

  2. 确保将“ name =“ USE_COMMAND_LINE”更改为value =“ false”

  3. 重新载入专案

做完了!


我会用Ctrl + Shft + F搜索,+ R =替换,其中F =查找。
Shishdem,2015年

0

对于那些像我一样努力寻找“来源”标签的人:

在此处输入图片说明

在这里,您必须将“ src”文件夹标记为蓝色(首先在“标记为:源”中单击,然后在src文件夹中单击),一切顺利。



0

我已经尝试了所有解决方案,但根本无法使用。比我曾尝试在我的android studio中禁用“即时运行”。

转到Android Studio设置首选项(对于MAC)->构建,执行,部署->即时运行

取消选中即时运行功能,然后单击文件菜单中的gradle文件同步项目

现在运行您的构建...


这对Android Studio 4.0+不再有效
Jorge E.Hernández

0

在某些情况下,您可以使用带有某些category字段的模型,如果您要在所有位置进行重构,则可以在清单文件中对其进行重构,然后标记xml将变得无效。


0

在这种情况下,可能会发生很多情况(未找到默认活动)。如果所有代码都很好,尤其是在清单上,则只需使Invalidate Cache并重新启动Studio,

但是有时候,当清单上有重复的活动声明时,不仅会发生在Main活动上,而且也会由子活动触发,这会发生。

这发生在我身上,找不到默认活动,因为我在清单上有重复的子活动,删除后,一切都很好



0

我想到了。我在活动声明中错误地添加了final关键字。一旦我删除它,一切正常!

public  class SplashActivity extends AppCompatActivity {
...
}

-1
  1. 在Android Studio中

  2. 转到编辑配置。

  3. 选择应用。

  4. 选择午餐活动路径。

  5. 申请,确定。

    谢谢!!


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.