2016-12-20 3 views
1

ich Fehler bekommen No Activity found to handle Intent, wenn ich versuche Standard Aktivität von einer anderen Aktivität zu beginnenKeine Aktivität gefunden Intent für Standard-Aktivität behandeln

Intent start = new Intent("com.name.name.MainActivity"); 
startActivity(start); 
finish(); 

Ich denke, das liegt daran, dass in AndroidManifest für Aktivität Default Ich android.intent.action.MAIN

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

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

Gibt es eine Möglichkeit, die Standardaktivität von einer anderen Aktivität zu starten, wenn die Standardaktivität bereits beendet ist?

+0

Sie benötigen etwas wie gemeinsame Einstellung .. Wie nach der ersten Aktivität speichern Sie eine gemeinsame Einstellung, die besagt, dass Sie fertig sind ed startet diese Aktivität zum ersten Mal und in onResume der firstactivity geht die Überprüfung Ihrer gemeinsamen Präferenz wenn wahr, dann starten Sie Ihre zweite Aktivität sonst keine –

+0

Bitte zeigen Sie die vollständige manifest –

+0

Lesen Sie docs ... Was ist ein String-Parameter von Intent Konstruktor mit nur einem Parameter? Ich bin mir sicher, dass das keine Komponente ist – Selvin

Antwort

4

Sie versuchen die Aktivität mit den Namen der Aktion zu starten ..

Hinweis: startActivity() fügt immer CATEGORY_DEFAULT zu einem Intent, wenn es keine andere Kategorie ist angegeben (Hier haben Sie keine Kategorie in Ihrem internt angegeben, so seine Standardeinstellung).

daher ein <intent-filter> für eine <activity> braucht immer ein <category>, ob DEFAULT oder etwas anderes (hier Standard muss, deshalb sagt Fehler Keine Aktivität behandeln Intent für Standard-Aktivität gefunden)

Die Abschußvorrichtung Kategorie besagt, dass dieser Einstiegspunkt im Application Launcher aufgelistet sein sollte.

Die Kategorie DEFAULT ist für die Methode Context.startActivity() erforderlich, um Ihre Aktivität aufzulösen, wenn der Komponentenname nicht explizit angegeben ist.

Try zwei Absicht Filter spezifizieren:

<activity android:name=".MyActivity" 
      android:configChanges="orientation|keyboardHidden" 
      android:windowSoftInputMode="stateHidden" 
      android:screenOrientation="portrait"> 
    <intent-filter> 
      <action android:name="android.intent.action.MAIN"/> 
      <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
    <intent-filter> 
      <action android:name="com.name.name.MainActivity"/> 
      <category android:name="android.intent.category.DEFAULT"/> 
    </intent-filter> 
</activity> 

Dann können Sie die Aktivität über den Aktionsnamen beginnen:

Intent intent = new Intent("com.name.name.MainActivity"); 
startActivity(intent); 

oder einfach können Sie mit dem Klassennamen gehen:

Intent intent = new Intent(context, MainActivity.class); 
startActivity(intent); 
3

Absicht i = neue Absicht (andere Aktivität.dies, MainActivity.class); startAktivität (i);

Verwandte Themen