Cambiar la actividad de inicio de la aplicación

386

He creado la carne y las tripas de mi aplicación, pero quiero agregar una actividad diferente que será el punto de partida (una especie de pantalla de inicio de sesión).

Un par de preguntas:

  • 1 Tengo un manejo bastante decente sobre cómo cambiar entre actividades (basado en este artículo: http://www.linux-mag.com/id/7498 ) pero no estoy seguro de cómo crear una nueva ( con eclipse) .

  • 2 Una vez que haya creado una nueva actividad, ¿cómo puedo configurarla como la actividad predeterminada de mi aplicación? Supongo que podría cambiar el nombre de las clases ... pero ¿hay alguna forma más elegante de manejar eso (tal vez dentro de AndroidManifest.xml)?

Kyle
fuente

Respuestas:

660

Sí, usas el AndroidManifest.xmlarchivo. Incluso puede tener más de una actividad de iniciador especificada en su manifiesto de aplicación. Para hacer que una actividad se vea en el iniciador, agregue estos atributos a su actividad en el manifiesto:

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
Nathan Schwermann
fuente
49
Para cualquiera que no sepa de qué habla esta publicación, es AndroidManifest.xml en la raíz de su proyecto. En Eclipse puede hacer doble clic en él y hacer clic en la pestaña en el extremo derecho para editar el XML directamente.
Austyn Mahoney
3
muchas gracias. Entonces, al incluir ese nodo de filtro de intención con sus nodos secundarios, ¿qué actividad se carga en el primero cuando se inicia la aplicación?
Kyle
44
@Kyle hará que esa actividad aparezca en la página de inicio, puede tener múltiples actividades con este filtro de intención que le brinda múltiples íconos en la pantalla de inicio.
Nathan Schwermann
3
usted menciona esta línea "incluso puede tener más de una actividad de iniciador especificada en su manifiesto de aplicación". Qué actividad se iniciará primero si tenemos más de una actividad
Tofeeq Ahmad
48
Esta es la respuesta correcta, pero acabo de notar algo extraño: si cambia la Actividad inicial a otra cosa y la actividad iniciada original todavía existe, el SDK ya no podrá iniciar su aplicación. De alguna manera tiene una referencia a la actividad en la configuración de inicio. Entonces, después de hacer el cambio anterior, también debe ir a "Ejecutar"> "Configuraciones de depuración", buscar el perfil de compilación de su proyecto, la pestaña "Android" y cambiar la actividad iniciada a la predeterminada o correcta en "Iniciar" : ". No estoy seguro de por qué el valor predeterminado no estaba seleccionado para mí, pero cambiarlo funcionó.
zeh 01 de
91

Vaya a AndroidManifest.xml en la carpeta raíz de su proyecto y cambie el nombre de la Actividad que desea ejecutar primero.

Ejemplo:

<activity android:name=".put your started activity name here"
          android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
neeraj t
fuente
11
si con esto aún no funciona en Android Studio, debe hacer clic en el ícono de Android (el que tiene la palabra aplicación) y seleccionar "Editar configuraciones", luego en la pestaña General, sección Actividad, seleccione "Iniciar actividad predeterminada"
Arma X
47

Si está utilizando Android Studio y puede haber seleccionado previamente otra Actividad para iniciar.

Haga clic en Run > Edit configurationy luego asegúrese de que esté seleccionada la opción Iniciar actividad predeterminada .

Iniciar actividad predeterminada

Zeezer
fuente
si en AndroidManifest.xml no hay filtro de intención para el iniciador, esta es la solución.
Amir Fazwan
1
Esto también es aplicable para Eclipse. Solo especificar los filtros de intención no es suficiente. Los filtros de intención se utilizan si el usuario ejecuta el APK directamente, pero si Eclipse ejecuta el APK, que lo instala, intenta iniciar una actividad específica. Esta actividad específica se especifica en "Propiedades del proyecto" (haga clic con el botón derecho en el proyecto) -> Configuración de ejecución / depuración.
Iker Jamardo Zugaza
¡Esto es increíble! Gracias por el consejo
Rafael Oliveira
30
 <application
    android:icon="@drawable/YOUR_ICON"    <!-- THIS ICON(IMAGE) WILL BE SHOWN IN YOUR APPS -->
    android:label="MY APP NAME " >    <!-- HERE LABEL(APP NAME) -->
    <activity
        android:name=".application's starting activity"  <!-- (.)dot means current dir, if your activity is in another package then give full package name ex: com.xxx.Activity  -->
        android:label="LABEL FOR ACTIVITY "
        android:screenOrientation="portrait" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
LMK
fuente
18

Siga las instrucciones a continuación:

1 :) Abre tu AndroidManifest.xmlarchivo.

2 :) Vaya al código de actividad en el que desea realizar su actividad principal, como se muestra a continuación.

como quiero hacer SplashScreen como actividad principal

<activity
    android:name=".SplashScreen"
    android:screenOrientation="sensorPortrait"
    android:label="City Retails">
</activity>

3 :) Ahora copie el siguiente código entre etiquetas de actividad igual que:

<activity
    android:name=".SplashScreen"
    android:screenOrientation="sensorPortrait"
    android:label="City Retails">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

y también verifique que las líneas recién agregadas no estén asociadas con otras etiquetas de actividad.

Bhunnu Baba
fuente
17

Esto es fácil de arreglar.

  • Los cambios en la actividad del iniciador también se almacenan en la configuración de depuración .
  • Ve Run > Debug Configurationsy edita la configuración.
  • También hay una configuración similar en Intellij en Run > Edit Configurationsseleccionar Ejecutar actividad predeterminada y ya no guardará la configuración de esta manera.
usuario3154790
fuente
14

Es simple. Haz esto en tu Manifestarchivo.

<activity
    android:name="Your app name"
    android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.HOME" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
</activity>
Rohit Sharma
fuente
1
debe eliminar <category android: name = "android.intent.category.HOME" />
Behrouz.M
2
<category android:name="android.intent.category.DEFAULT" />, eso es lo que realmente funciona aquí
1111161171159459134
1
android.intent.category.HOMEes para usar en una aplicación estilo Kiosk-mode, donde se reemplaza el iniciador predeterminado. El uso de esto sin reemplazar el iniciador dará como resultado un aviso durante el inicio de SystemUI que le preguntará qué iniciador usar. Ver también: stackoverflow.com/questions/22911156/…
CJBS
6
 <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
Excepción de puntero nulo
fuente
5

Simplemente vaya a su archivo AndroidManifest.xml y agregue como a continuación

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

luego guarde y ejecute su proyecto de Android.

usuario3206168
fuente
3

Agregue esto que desea iniciar la actividad android:exported="true"en el archivo de manifiesto como

 <activity
      android:name=".activities.activity.MainActivity"
      android:windowSoftInputMode="adjustPan"
      android:exported="true"/>
  <activity

Abra el archivo Java de esta actividad y haga clic derecho y luego haga clic en Ejecutar 'Actividad principal'

O

Abra el archivo java de esta actividad y presione Ctrl+ Shift+ F10.

Prabh profundo
fuente
¿Qué efecto tiene esto? ¿Solo lanzando?
chia yongkang
2

En un proyecto reciente, cambié la actividad predeterminada en AndroidManifest.xml con:

<activity android:name=".MyAppRuntimePermissions">
</activity>

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

En Android Studio 3.6; Esto parece estar roto. He usado esta técnica en aplicaciones de ejemplo, pero cuando la uso en esta aplicación del mundo real se cae. El IDE una vez más informa:

Error al ejecutar la aplicación: actividad predeterminada no encontrada.

El IDE todavía mostró un error de configuración en el espacio "Ejecutar aplicación" en la barra de herramientas (flecha amarilla en esta captura de pantalla)

Error en la configuración de "ejecutar aplicación"

Para corregir este error, he intentado varias reconstrucciones del proyecto y finalmente Archivo >> "Invalidar caché / reiniciar" . Esto no ayudó. Para ejecutar la aplicación tuve que "Editar configuraciones" y señalar la actividad específica en lugar de la actividad predeterminada:

Cuadro de diálogo Editar configuración

martshal
fuente