studio resueltos para intuitivas herramientas ejercicios desarrollo curso con avanzado aplicaciones android

resueltos - herramientas de android studio pdf



¿Puedo iniciar diferentes actividades en el inicio dependiendo de las preferencias del usuario? (3)

Tengo un ListActivity y un MapActivity. Me gustaría iniciar una de estas actividades en el inicio de la aplicación que haya elegido el usuario en una ventana de preferencias.

Hasta ahora, la única manera que veo para iniciar una actividad en el inicio de la aplicación es especificarla en el archivo de manifiesto de la aplicación usando ...

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

Estoy pensando que podría tener que comenzar una actividad que no hace nada pero mira las preferencias del usuario y luego lanza ListActivity o MapActivity. Parece un desperdicio tener una actividad que no hace más que lanzar otra actividad. En mi investigación no he encontrado ninguna solución a este problema. Cualquier sugerencia sería muy apreciada.

Gracias y Saludos, Dave


Acabo de agregar el siguiente código al método onCreate () y funcionó a la perfección.

Intent intent; intent = new Intent(this, MyMap.class); startActivity( intent ); finish();


En primer lugar, no cree una tercera actividad. Simplemente LAUNCHER Activity LAUNCHER sea ​​la lista o el mapa, y startActivity() que llame a startActivity() en la otra (más finish() ) en onCreate() antes de llamar a setContentView() cuando sea necesario. De esa manera, ~ 50% del tiempo, estás lanzando la actividad correcta.

En principio, puede hacer que ambas actividades tengan un LAUNCHER <intent-filter> , solo habilitando una. Sin embargo, eso no funcionará con los accesos directos del escritorio, que se dirigirán a una actividad específica (la que se configuró cuando crearon el acceso directo). Si esto no te concierne, puedes ir por esta ruta. Sin embargo, intente probarlo con algunos dispositivos y pantallas de inicio personalizadas. No estoy seguro de que todos se percaten de su cambio de inmediato.


para la gente nueva (yo), la siguiente es la respuesta de dave, más los cambios que necesito hacer en AndroidManifest.xml.

Actividad principal:

Intent intent; intent = new Intent(this, DisplayMessageActivity.class); startActivity( intent );

cambios en el archivo xml, desde -> http://developer.android.com/training/basics/firstapp/starting-activity.html

AndroidManifest.xml:

<activity android:name="com.mycompany.myfirstapp.DisplayMessageActivity" android:label="@string/title_activity_display_message" android:parentActivityName="com.mycompany.myfirstapp.MyActivity" > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.mycompany.myfirstapp.MyActivity" /> </activity>