2011-01-10 7 views
4

Wenn meine App zum ersten Mal geöffnet wird, kann die erste Aktivität, die dem Benutzer angezeigt wird, je nach Konfigurationsoptionen variieren. Ich weiß nur, wie man hart Code die erste Aktivität, die ausgeführt wird, wenn die Anwendung von so etwas wie dies in dem ManifestHilfe mit der ersten Android-Aktivität

<activity android:label="@string/app_name" android:name=".MyFirstActivity"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

Zugabe läuft Wo MyFirstActivity der Klassenname der ersten Aktivitätsklasse ist ausgeführt werden sollte. Wie kann ich dynamisch auswählen, welche Aktivität zuerst ausgeführt wird, wenn die App zum ersten Mal gestartet wird, anstatt sie im Manifest fest zu codieren?

Danke!

+1

Sorry, als meine Antwort von nicht nützlich, also habe ich es gelöscht. –

Antwort

9

Option # 1: In onCreate() von MyFirstActivity, startActivity() für die richtige Aktivität nennen, dann finish().

Option # 2: Definieren Sie mehrere Aktivitäten mit LAUNCHER<intent-filter>, alle bis auf eine deaktiviert. Aktivieren Sie bei der ersten Ausführung (oder nach Bedarf) die richtige Aktivität und deaktivieren Sie die anderen. Nachteil: Unter Umständen kann ein Neustart des Telefons erforderlich sein, um den Launcher zu aktualisieren, da nicht alle Startbildschirm-Launcher Ihre Änderung erkennen.

Option # 3: Redesign Ihre GUI so, dass dies kein Problem ist.

+0

Ich wusste nicht, dass Sie Aktivitäten außer Betrieb töten können. Option 1 sollte für das, was ich versuche, gut funktionieren. Vielen Dank! –

+0

In meiner Anwendung wird eine von zwei Aktivitäten ausgewählt, nachdem der Benutzer die Anwendung "registriert" hat. Da dies nur einmal passiert, funktioniert Option # 2 sehr gut für mich. Es hat auch den Vorteil, dass das Etikett und das Symbol auch geändert werden können. – Ralf

+2

Es ist einfach, aber kann hilfreich sein im Falle der Option # 1, wenn Sie nicht möchten, dass Ihre 'MyFirstActivity' während der Anwendung ausgelöst wird: einfach Ihre' MyFirstActivity extends Activity' UND auch 'android: theme =" @android: style/Theme.NoDisplay "' in seinem Manifest. – Przemo