Nie znaleziono działania domyślnego w Android Studio


93

Właśnie zaktualizowałem system Android Studio do wersji 0.2.8 i pojawia się komunikat o błędzie „Nie znaleziono działania domyślnego”, gdy próbuję edytować konfiguracje uruchamiania.

Po uruchomieniu Android Studio pojawia się ten błąd „Dostęp jest dozwolony tylko z wątku wysyłania zdarzeń”

Aktywność, której używam, jest działaniem fragmentarycznym.

Do tej pory próbowałem odbudować i unieważnić cache / restart. Oba były bezużyteczne.

Daj mi znać, co mogę zrobić, aby rozwiązać problem.


Odpowiedzi:


45

W Android Studio kliknij prawym przyciskiem myszy projekt i wybierz Otwórz ustawienia modułu . Następnie przejdź do zakładki Źródła w swoim module, znajdź folder src , kliknij go prawym przyciskiem myszy i zaznacz jako Źródła (kolor niebieski).

EDYCJA: W późniejszych wersjach Android Studio nie ma karty źródeł, ale zamiast tego możesz edytować plik build.gradle : https://stackoverflow.com/a/22028681/1101730 (dzięki za komentarz Josh)


27
Jak mogłem to zrobić w 0.6.1 ? Nie widzę karty Źródła .
lschlessinger

7
ja też nie. Istnieją właściwości, podpisy, smaki, typy kompilacji i zależności
Junior Mayhé

4
Nie miałem karty „Źródła”, więc zamiast tego zmodyfikowałem plik build.gradle: stackoverflow.com/a/22028681
Josh

2
Idealny! Dzięki za pomoc @Micer. Chłopaki, w swoim projekcie IntelliJ naciśnij 'F4', masz wtedy trzy zakładki (Źródła, Ścieżki, Zależności), przejdź do zakładki 'Źródła' i sprawdź, czy folder 'src' (w strukturze drzewa) jest niebieski. Jeśli nie, naciśnij „Alt + S”, aby dołączyć folder źródłowy do struktury projektu.
Ryan Amaral

1
@IgorGanapolsky Masz rację, wygląda na to, że zakładka Źródła została usunięta w późniejszych wersjach Android Studio. Sprawdź odpowiedź Josha.
Micer

51

Czy dodałeś ACTION_MAINfiltr intencji do swojej głównej aktywności? Jeśli tego nie dodasz, Android nie będzie wiedział, które działanie ma zostać uruchomione jako główne działanie.

dawny:

<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
Tak, to jest zrobione. Naprawiono „Dostęp jest dozwolony tylko z wątku wysyłania zdarzeń”, używając Oracle JDK zamiast openJDK. Domyślna brakująca aktywność nadal istnieje
Vipassana Vijayarangan

5
Również nazwa "com.package.name.MyActivity"może zostać pominięta, jeśli cały <intent-filter>element znajduje się wewnątrz <activity>elementu, który odpowiada Twojej MyActivity w Twojej przestrzeni nazw.
Xavi Montero

Hah, zmieniłem nazwę klasy o nazwie, w Filtertym wszystkie nazwane zmienne filteri najwyraźniej Android Studio zdecydowało się dołączyć AndroidManifest.xmli <intent-*filter*>. Ta odpowiedź sprawiła, że ​​dwukrotnie sprawdziłem AndroidManifest.xmli pomogła mi znaleźć błąd =)
Stephan Henningsen

Gdzie to jest w ogóle udokumentowane? Nie mogę tego znaleźć…
mirabilos

32

Miałem ten sam problem podczas importowania projektu do Android Studio, prawdopodobnie spowodowany tym, że projekt został opracowany na wcześniejszej wersji Android Studio niż obecnie zainstalowana na moim komputerze.

Rozwiązaniem tego problemu był po prostu wybór:

File -> Invalidate Caches / Restart...

a następnie wybierając Invalidate and Restart.


1
Dziękuję bardzo @syntagma, twoje wskazówki rozwiązały mój problem po wielu godzinach wysiłku.
MMG

16

Jeśli nie masz karty i zacząłeś od pustej aktywności, spróbuj tego. Poniżej znajduje się przykładowy kod:

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

Teraz przejdź do pliku AndroidManifest.xml. Następnie skopiuj filtr intencji z tego kodu. Spójrz na swój plik manifestu naprawdę dobrze i wklej filtr intencji w dokładnym miejscu w powyższym kodzie. (po części .yourActivityName> manifestu). Mam nadzieję, że to pomogło.


13

Jeśli nadal pojawia się komunikat o błędzie „Nie znaleziono działania domyślnego” podczas próby edytowania konfiguracji uruchamiania, nawet po wykonaniu:

Unieważnij pamięć podręczną i uruchom ponownie .

Następnie spróbuj usunąć folder Ustawienia / Preferencje:

/< USER_HOME_DIR >/.AndroidStudioPreview3.2

lub na komputerze Mac:

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

Jeśli zmieniłeś nazwy swoich pakietów lub przełączyłeś gałęzie z kontroli wersji, czasami Android Studio nie rozpoznaje wszystkich plików i powoduje bałagan. Jedynym rozwiązaniem, które zadziałało dla mnie, jest zamknięcie AS, a następnie usunięcie .AndroidStudioXY (gdzie XY to numer Twojej wersji), który @ Phileo99 wskazał.
Zbarcea Christian

1
Uratowałeś mi życie! Po prostu zrób to / <USER_HOME_DIR> /. AndroidStudioPreview3.2
nadafafif

nie ma za co @nadafafif! proszę, zagłosuj na moją odpowiedź, jeśli ci to pomogło.
Phileo99

@ Phileo99 Już to zrobiłem. Nie mogłem się przed tym powstrzymać. :) Twoje zdrowie. Pomagaj dalej w ten sposób.
nadafafif

To pomogło, ale pamiętaj, że pobierzesz wiele rzeczy. Pobieranie trwa około 15 minut
Valgaal,

10

Kiedy kliknąłem „Otwórz ustawienia modułu”, nie było zakładki „Źródło” , myślę, że została ona usunięta z nowszych wersji Android Studio (jestem na 0.8.14). Więc zamiast tego musiałem to zrobić:

Dodaj te linie do build.gradlepliku wewnątrz android { ... }bloku:

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

Po edycji pliku kliknij Narzędzia> Android> Synchronizuj projekt z plikami Gradle .

Podziękowania dla tej odpowiedzi i tego komentarza .


9

Podążanie za mną załatwiło sprawę. Z Run -> Edytuj konfigurację .

wprowadź opis obrazu tutaj


Odradzałbym to rozwiązanie, ponieważ spowodowało to zniknięcie aplikacji na liście dostępnych aplikacji w Samsungu Galaxy S5 Neo i Samsung Galaxy S6.
Teun Kooijman

3

Mój problem sprowadził się do dodatkowego błędu, który czasami pojawiał się, stwierdzając

Manifest Merger failed with multiple errors in Android Studio

To, co ostatecznie spowodowało mój problem, to fakt, że było wiele manifestów (manifest debugowania i manifest w nowym module, który właśnie zaimportowałem) iz tego powodu nie łączyły się one poprawnie. Po zapoznaniu się z tą odpowiedzią udało mi się przeanalizować scalony manifest, znaleźć przyczynę problemu i go naprawić.


2

przydarzyło mi się to, ponieważ wykorzystałem ścieżki w manifeście. zmieniono:

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

do

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

i zostało to naprawione


Uratowałeś mi dzień! Dzięki
Siva Kumar

2

Dzisiaj natknąłem się na ten sam problem i przeglądałem tutaj odpowiedzi.

Dla mnie różnica polegała na tym, że wczoraj działało dobrze, więc pomyślałem, że tak naprawdę nie może to być problem z konfiguracją, ani konfiguracja, ani wersja Android Studio nie uległa zmianie.

Na szczęście próbowałem ponownie uruchomić Android Studio przed wypróbowaniem innych odpowiedzi i na szczęście to rozwiązało problem.

Tak więc dla wszystkich ludzi, którzy napotkają to: pierwszą rzeczą do wypróbowania jest ponowne uruchomienie Android Studio i tylko jeśli to nie rozwiąże problemu, wypróbuj inne odpowiedzi tutaj.


2

Właśnie doświadczyłem tego samego błędu w Android Studio 1.5.1. i właśnie znalazłem źródło problemu. Nie jestem pewien, czy przyczyną był błąd ludzki, czy dziwna usterka w działaniu IDE, ale żadne z istniejących pytań StackOverflow na ten temat nie wydawało się nic na ten temat, więc pomyślałem, że i tak opublikuję to jako odpowiedź.

Dla mnie, jeden z członków mojego zespołu lub samo IDE, zmieniło wpis manifestu działań programu uruchamiającego, przez co wyglądał tak:

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

Chociaż w rzeczywistości powinno to wyglądać tak:

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

Dlatego sprawdź dwukrotnie, potrójnie, czterokrotnie format swojej aktywności programu uruchamiającego w manifeście, a być może uda Ci się zaoszczędzić trochę czasu.

Mam nadzieję że to pomoże.

EDYCJA: Zdecydowanie sugeruję, aby ludzie nie korzystali z odpowiedzi, które sugerują ręczne wybieranie aktywności programu uruchamiającego w opcjach konfiguracyjnych modułu, ponieważ spowodowało to, że aplikacja nie była już wyświetlana na liście zainstalowanych aplikacji zarówno na Samsung Galaxy S5 Neo i Samsung Galaxy S6 (przynajmniej dla mnie).


2

wprowadź opis obrazu tutaj

Aplikacja prasowa -> Edytuj konfiguracje
Następnie zmień wartość w Uruchom na „Nic”


1

Upewnij się w manifeście, że nazwa pakietu jest taka sama jak Twoja główna aktywność


1
  1. W Android Studio przełącz się na perspektywę projektu (nie na Androida).

  2. Upewnij się, że Twój projekt jest zgodny z domyślną strukturą wtyczki gradle (tj. Katalog_projektu / app / src / main / java ... )

  3. Usuń wszystkie foldery i podfoldery kompilacji , które widzisz.

  4. Na pasku narzędzi kliknij Build -> Clean Project , a następnie Build -> Rebuild Project .

  5. Spróbuj uruchomić projekt.


1

Możesz sprawić, by Android Studio nie narzekał, przechodząc do menu „Edytuj konfiguracje” (dotknij „Shift” trzy razy, wpisz „Edytuj konfiguracje”), a następnie zmień Opcje uruchamiania> Uruchom na „Nic”.

Prawdopodobnie dodam ogólną aktywność zawierającą instrukcje, aby uniknąć nieporozumień.


To zaoszczędziło mi czasu
Sayali

1

W moim przypadku zadziałało, gdy usunąłem folder .idea z projektu (Project / .ida) i ponownie otworzyłem Android Studio.


Usunięcie folderu .idea pomogło w moim przypadku, dzięki! Dla wyjaśnienia, wszystkie pliki z rozszerzeniem „.iml” znajdowały się w folderze .idea. NIE usuwaj tylko plików .iml, ponieważ może to prowadzić do innych błędów!
Cordis Audax Agrinova

0
  1. Kliknij projekt prawym przyciskiem myszy i wybierz opcję Otwórz ustawienia modułu.
  2. Przejdź do zakładki Źródła w swoim module.
  3. Znajdź swój folder src.
  4. Kliknij go prawym przyciskiem myszy i oznacz jako Źródła.

To rozwiązało błąd w moim przypadku.


0

Jeśli zmieniłeś nazwę katalogów (strukturę klasy), na przykład com.dir.sample na com.dir.sample1, nie zapomnij zmienić pakietu com.dir.sample na com.dir.sample1.


0

Zmodyfikuj plik „Workspace.xml” (naciśnij Ctrl + Shft + R, aby go przeszukać)

  1. Zmień nazwę działania na nazwę pakietu

  2. Pamiętaj, aby zmienić „name =„ USE_COMMAND_LINE ”na value =„ false ”

  3. Załaduj ponownie projekt

Gotowe!


Szukałbym za pomocą Ctrl + Shft + F, + R = zamień, gdzie F = znajdź.
Shishdem

0

Dla takich jak ja, którzy mieli problem ze znalezieniem karty „Źródła”:

wprowadź opis obrazu tutaj

Tutaj musisz oznaczyć swój folder „src” na niebiesko (najpierw kliknij Oznacz jako: Źródło , a następnie w swoim folderze src ) i gotowe.


0

Możesz wykonać dwa kroki:

  1. Przejdź do konfiguracji i wprowadź nazwę działania do uruchomienia
  2. Jeśli nadal nie działa, wyłącz funkcję Instant Run

0

Wypróbowałem wszystkie rozwiązania, ale w ogóle nie działały. niż próbowałem wyłączyć natychmiastowe uruchamianie w moim studiu Android.

Przejdź do ustawień lub preferencji Android Studio (dla MAC) -> Kompilacja, wykonanie, wdrożenie -> Natychmiastowe uruchamianie .

odznacz funkcję Instant run, a następnie kliknij zsynchronizuj projekt z plikami gradle w menu plików

teraz uruchom swoją kompilację ...


Nie dotyczy to już Android Studio 4.0+
Jorge E. Hernández

0

W niektórych przypadkach możesz mieć model z jakimś categorypolem, jeśli zrefaktorujesz go we wszystkich miejscach, może to zrobić w pliku manifestu i wtedy tag xml stanie się nieważny.


0

Dla tego rodzaju przypadku może wystąpić wiele możliwości (Nie znaleziono domyślnej aktywności) Jeśli cały kod jest w porządku, szczególnie na Manifest, wystarczy unieważnić Cache i ponownie uruchomić studio,

Ale czasami zdarza się, że masz zduplikowaną deklarację działania w manifeście, nie tylko dla działania głównego, jest również wyzwalana przez działania podrzędne.

Stało się to ze mną, nie znaleziono działania domyślnego, ponieważ mam zduplikowane działania podrzędne w manifeście, po usunięciu tego wszystko jest w porządku



0

Rozgryzłem to. Pomyłkowo dodałem ostatnie słowo kluczowe w deklaracji aktywności. Po usunięciu wszystko działa!

public  class SplashActivity extends AppCompatActivity {
...
}

-1
  1. W Android Studio

  2. Przejdź do edycji konfiguracji.

  3. Wybierz aplikację.

  4. wybierz ścieżkę aktywności obiadowej.

  5. zastosuj, OK.

    Dzięki!!


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.