我刚刚升级到Android Studio 0.2.8,尝试编辑运行配置时出现错误消息“找不到默认活动”。
当我启动Android Studio时,出现此错误“仅允许从事件分发线程进行访问”
我正在使用的活动是片段活动。
到目前为止,我已经尝试过重新构建并使缓存/重新启动无效。两者都没有用。
请让我知道如何解决此问题。
我刚刚升级到Android Studio 0.2.8,尝试编辑运行配置时出现错误消息“找不到默认活动”。
当我启动Android Studio时,出现此错误“仅允许从事件分发线程进行访问”
我正在使用的活动是片段活动。
到目前为止,我已经尝试过重新构建并使缓存/重新启动无效。两者都没有用。
请让我知道如何解决此问题。
Answers:
在Android Studio中,右键单击该项目,然后选择打开模块设置。然后转到模块中的“源”选项卡,找到src文件夹,右键单击它并将其标记为“源”(蓝色)。
编辑:更高版本的Android Studio中没有源选项卡,但您可以改为编辑build.gradle文件:https : //stackoverflow.com/a/22028681/1101730(感谢Josh的评论)
您是否已将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>
"com.package.name.MyActivity"
如果所有<intent-filter>
元素都在<activity>
与您的命名空间中的MyActivity相对应的元素内,则可以省略名称。
Filter
其中包括所有具名的变量,filter
并且显然Android Studio决定包含AndroidManifest.xml
and <intent-*filter*>
。这个答案让我重新检查了一下,AndroidManifest.xml
并帮助我找到了错误=)
如果没有该标签,而您以空的活动开始,请尝试此操作。下面是一个示例代码示例:
<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>之后。)希望对您有所帮助。
如果即使执行后仍尝试编辑运行配置时仍然出现“找不到默认活动”错误,则:
使缓存无效并重新启动。
然后尝试删除“设置/首选项”文件夹:
/< USER_HOME_DIR >/.AndroidStudioPreview3.2
或在Mac上:
/Users/<USER_NAME>/Library/Preferences/.AndroidStudioPreview3.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>
它是固定的
我刚刚在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(至少对我而言)。
就我而言,当我从项目(Project / .ida)中删除.idea文件夹并再次重新打开Android Studio时,它可以工作。
修改“ Workspace.xml”(按Ctrl + Shft + R进行搜索)
用包名称修改活动名称
确保将“ name =“ USE_COMMAND_LINE”更改为value =“ false”
重新载入专案
做完了!
您可以执行两个步骤:
我已经尝试了所有解决方案,但根本无法使用。比我曾尝试在我的android studio中禁用“即时运行”。
转到Android Studio设置或首选项(对于MAC)->构建,执行,部署->即时运行。
取消选中即时运行功能,然后单击文件菜单中的gradle文件同步项目
现在运行您的构建...
默认活动名称已更改(例如SplashActivity-> SplashActivity1)并为我工作