Активність за замовчуванням не знайдено в 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
я теж ні. Є властивості, підпис, аромати, типи збірки та залежності
Junior Mayhé

4
Я не мав вкладки «Джерела», так що я редагував файл build.gradle замість: stackoverflow.com/a/22028681
Джос

2
Ідеально! Дякуємо за допомогу @Micer. Хлопці, у вашому проекті IntelliJ натисніть 'F4', тоді у вас буде три вкладки (Джерела, Шляхи, Залежності), перейдіть на вкладку 'Джерела' та перевірте, чи папка 'src' (у структурі дерева) блакитна. Якщо не натиснути "Alt + S", щоб включити вихідну папку в структуру проекту.
Райан Амарал

1
@IgorGanapolsky Ви маєте рацію, здається, вкладку Джерела було видалено в пізніших версіях Android Studio. Перевірте відповідь Джоша.
Мікер

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 у вашому просторі імен.
Хаві Монтеро,

Ха, я перейменував клас з іменем, Filterвключаючи всі названі змінні, filterі, очевидно, Android Studio вирішив включити AndroidManifest.xmlі <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, а потім видалити .AndroidStudioXY (де XY - номер вашої версії), на що вказав @ Phileo99.
Zbarcea Christian

1
Ти врятував моє життя! Просто зробіть це / <USER_HOME_DIR> /. AndroidStudioPreview3.2
nadafafif

ласкаво просимо @nadafafif! будь ласка, проголосуйте мою відповідь, якщо це допомогло вам.
Phileo99

@ 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.
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>

і це було виправлено


Ти врятував мій день! Дякую
Сіва Кумар

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 (принаймні для мене).


2

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

Натисніть додаток -> Редагувати конфігурації
Після цього змініть значення в Запуск на "Нічого"


1

Будь ласка, переконайтесь, що в маніфесті назва пакета збігається з вашою основною діяльністю


1
  1. В Android Studio перейдіть на перспективу проекту (не на перспективу Android).

  2. Переконайтесь, що ваш проект відповідає структурі плагіна gradle за замовчуванням (тобто project_dir / app / src / main / java ... )

  3. Видаліть усі папки збірки та підпапки, які ви бачите.

  4. На панелі інструментів клацніть Будувати -> Очистити проект , потім Будувати -> Відновити проект .

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


1

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

Можливо, я додам загальну діяльність, що містить інструкції, щоб уникнути плутанини.


Це врятувало мій час
Саялі

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" (спочатку натисніть Позначити як: джерело , потім у папці src ), і все готово.


0

Ви можете зробити два кроки:

  1. Перейдіть до конфігурацій та введіть назву діяльності, яку потрібно запустити
  2. Якщо це все ще не працює, вимкніть миттєвий запуск

0

Я випробував усі рішення, але взагалі не працюю. ніж я намагався вимкнути миттєвий запуск у моїй студії Android.

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

зніміть прапорець перед функцією "Миттєвий запуск", а потім, після натискання проекту синхронізації з файлами gradle з меню файлів

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


Це більше не діє для Android Studio 4.0+
Хорхе Е. Ернандес,

0

У деяких випадках у вас може бути модель з яким-небудь categoryполем, якщо ви рефакторингуєте її у всіх місцях, вона може рефакторити її у файлі маніфесту, і тоді тег xml стане недійсним.


0

Для такого роду випадків може статися багато можливостей (Діяльність за замовчуванням не знайдена) Якщо весь код у порядку, особливо на Manifest, просто потрібно вимкнути кеш і перезапустити студію,

Але іноді це трапляється, коли у вас є дублікат декларації про активність у маніфесті, і не лише для основної діяльності, це також ініціюється дочірньою діяльністю.

Це сталося зі мною, активність за замовчуванням не знайдено, оскільки у мене є дублювання дочірніх дій у маніфесті, після видалення це все добре



0

Я зрозумів це. Я помилково додав остаточне ключове слово в декларацію про діяльність. Після того, як я його видалив, все працює!

public  class SplashActivity extends AppCompatActivity {
...
}

-1
  1. В Android Studio

  2. Перейдіть до редагування конфігурації.

  3. Виберіть програму.

  4. оберіть обідній шлях активності.

  5. подати заявку, гаразд.

    Дякую!!


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.