Действия по умолчанию не найдены в Android Studio


93

Я только что обновился до Android Studio 0.2.8 и получаю сообщение об ошибке «Действия по умолчанию не найдены», когда пытаюсь изменить конфигурации запуска.

Когда я запускаю Android Studio, я получаю сообщение об ошибке «Доступ разрешен только из потока отправки событий».

Я использую действие фрагмента.

До сих пор я пытался восстановить и аннулировать кеши / перезапуск. Оба были бесполезны.

Пожалуйста, дайте мне знать, что я могу сделать, чтобы решить эту проблему.


Ответы:


45

В Android Studio щелкните проект правой кнопкой мыши и выберите « Открыть настройки модуля» . Затем перейдите на вкладку « Источники » в своем модуле, найдите папку src , щелкните ее правой кнопкой мыши и отметьте как « Источники» (синий цвет).

РЕДАКТИРОВАТЬ: в более поздних версиях Android Studio нет вкладки источников, но вместо этого вы можете отредактировать файл build.gradle : https://stackoverflow.com/a/22028681/1101730 (спасибо за комментарий, Джош)


27
Как я мог сделать это в 0.6.1 ? Я не вижу вкладки " Источники" .
lschlessinger

7
и я нет. Есть свойства, подпись, ароматы, типы сборки и зависимости
Джуниор Майе

4
У меня не было вкладки «Источники», поэтому вместо этого я отредактировал файл build.gradle: stackoverflow.com/a/22028681
Джош

2
Отлично! Спасибо за помощь @Micer. Ребята, в вашем проекте IntelliJ нажмите F4, затем у вас есть три вкладки (Источники, Пути, Зависимости), перейдите на вкладку «Источники» и проверьте, синяя ли папка «src» (в древовидной структуре). Если нет, нажмите «Alt + S», чтобы включить исходную папку в структуру проекта.
Райан Амарал

1
@IgorGanapolsky Вы правы, похоже, вкладка «Источники» была удалена в более поздних версиях Android Studio. Проверьте ответ Джоша.
Micer 08

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. Отсутствие активности по умолчанию все еще сохраняется
Випассана Виджаяранган

5
Также имя "com.package.name.MyActivity"может быть опущено, если весь <intent-filter>элемент находится внутри <activity>элемента, который соответствует вашей MyActivity в вашем пространстве имен.
Xavi Montero

Ха, я переименовал класс с именем, Filterвключающим все указанные переменные, filterи, очевидно, Android Studio решила включить AndroidManifest.xmlи <intent-*filter*>. Этот ответ заставил меня перепроверить AndroidManifest.xmlи помочь мне найти ошибку =)
Стефан Хеннингсен

Где это вообще задокументировано? Не могу найти…
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

Если вы все еще получаете сообщение об ошибке «Действия по умолчанию не найдены» при попытке изменить конфигурации запуска даже после выполнения:

Недействительный кеш и перезапуск .

Затем попробуйте удалить папку Settings / Preferences:

/< USER_HOME_DIR >/.AndroidStudioPreview3.2

или на Mac:

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

Если вы переименовали свои пакеты или переключили ветки из системы контроля версий, иногда Android Studio не распознает все файлы и все портит. Единственное решение, которое сработало для меня, - закрыть AS, а затем удалить .AndroidStudioXY (где XY - номер вашей версии), на что указал @ Phileo99.
Збарча Кристиан

1
Вы спасли мою жизнь! Просто сделайте это / <USER_HOME_DIR> /. AndroidStudioPreview3.2
nadafafif

добро пожаловать @nadafafif! пожалуйста, проголосуйте за мой ответ, если он вам помог.
Phileo99 08

@ Phileo99 Уже сделал это. Не мог удержаться от этого. :) Ура. Продолжай так помогать.
nadafafif

Это помогло, но имейте в виду, что вы скачаете много всего. На загрузку уходит около 15 минут
Валгаал

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.
Теун Коойман

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>

и это было исправлено


Ты спас мне день! Спасибо
Шива Кумар

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 и Samsung Galaxy S6 (по крайней мере, для меня).



1

Убедитесь, что в манифесте имя пакета совпадает с вашим основным действием


1
  1. В Android Studio переключитесь на перспективу проекта (не на перспективу Android).

  2. Убедитесь, что ваш проект соответствует структуре плагина gradle по умолчанию (например, project_dir / app / src / main / java ... )

  3. Удалите все папки сборки и подпапки, которые вы видите.

  4. На панели инструментов нажмите Build -> Clean Project , затем Build -> Rebuild Project .

  5. Попробуйте запустить проект.


1

Вы можете заставить Android Studio не жаловаться, перейдя в меню «Редактировать конфигурации» (трижды нажмите «Shift», введите «Редактировать конфигурации»), затем измените «Параметры запуска»> «Запуск» на «Ничего».

Я, вероятно, добавлю общее действие, содержащее инструкции, чтобы избежать путаницы.


Это сэкономило мне время
Sayali

1

В моем случае это сработало, когда я удалил папку .idea из проекта (Project / .ida) и снова открыл Android Studio.


Удаление папки .idea помогло в моем случае, спасибо! Для пояснения все файлы с расширением ".iml" находились внутри папки .idea. НЕ удаляйте только файлы .iml, так как это может привести к другим ошибкам!
Кордис Аудакс Агринова,

0
  1. Щелкните проект правой кнопкой мыши и выберите «Открыть настройки модуля».
  2. Перейдите на вкладку «Источники» в вашем модуле.
  3. Найдите свою папку src.
  4. Щелкните его правой кнопкой мыши и отметьте как Источники.

Это решило ошибку в моем случае.


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 = найти.
Шишдем

0

Для тех, кто, как я, изо всех сил пытался найти вкладку «Источники»:

введите описание изображения здесь

Здесь вы должны пометить свою папку «src» синим цветом (сначала щелкните по Mark as: Source , затем в папке src ), и все готово.


0

Вы можете предпринять два шага:

  1. Зайдите в настройки и введите название активности для запуска
  2. Если он по-прежнему не работает, отключите мгновенный запуск

0

Я пробовал все решения, но совсем не работал. чем я попытался отключить мгновенный запуск в своей студии Android.

Перейдите в настройки или настройки Android Studio (для MAC) -> Сборка, выполнение, развертывание -> Мгновенный запуск .

снимите флажок с функции мгновенного запуска, а затем после нажатия кнопки синхронизации проекта с файлами Gradle из меню файла

теперь запустите свою сборку ...


Это больше не действует для Android Studio 4.0+
Хорхе Э. Эрнандес,

0

В некоторых случаях у вас может быть модель с каким-либо categoryполем, если вы реорганизуете ее во всех местах, она может реорганизовать ее в файле манифеста, и тогда тег xml станет недействительным.


0

В этом случае может возникнуть много возможностей (действие по умолчанию не найдено). Если весь код в порядке, особенно в манифесте, просто нужно сделать недействительным кеш и перезапустить студию,

Но иногда это происходит, когда у вас есть дублирующееся объявление активности в манифесте, не только для основного действия, оно также запускается дочерними действиями.

Это случилось со мной, активность по умолчанию не найдена, потому что у меня есть дублирующие дочерние действия в манифесте, после удаления все в порядке



0

Я понял. Я по ошибке добавил ключевое слово final в объявлении активности. Как только я его удалил, все работает!

public  class SplashActivity extends AppCompatActivity {
...
}

-1
  1. В Android Studio

  2. Перейдите к редактированию конфигурации.

  3. Выберите приложение.

  4. выберите путь к обеду.

  5. применить, ОК.

    Благодарность!!


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.