Imprimir

La manera más cómoda de crear una nueva Activity en un proyecto Android existente en Eclipse, es utilizar el menú contextual del paquete de fuentes donde quieras crearla, seleccionando la opción New > Activity.

studioActivity01

Esta opción inicia un asistente que crea el Layout, la clase Java, registra la activity en el archivo AndroidManifest.XML y declara los recursos necesarios. Si no utilizas este asistente, deberás realizar cada una de esas acciones por separado.

El inicio del asistente será familiar para tí porque es muy similar al que aparece al crear un nuevo proyecto con el asistente. En primer lugar debes indicar el tipo de plantilla a utilizar para crear la Activity.

studioActivity02

Si has seleccionado el tipo Blank Activity, deberás indicar a continuación el nombre que deseas para la clase Java correspondiente a la nueva Activity (Activity Name), el nombre del archivo que contendrá el layout asociado (Layout Name), el nombre del archivo del Fragment que se inclurá en el layout anterior (Fragment Layout Name) donde puedes indicar el mismo nombre que el del layout si no deseas crear un Fragment dentro de él, y el título que se mostrará (Title).

Además podrás indicar si esta activity deberá tener un icono asociado en la lista de aplicaciones del dispositivo (Launcher Activity), podrás especificar qué activity es padre de la que se está creando (Hierarchical Parent), y el tipo de navegación que se desea aplicar (Navigation Type).

studioActivity03

Al finalizar el asistente de creación de la nueva Activity, podrás ver los cambios que se han producido. En primer lugar verás que en la carpeta res/layout se ha creado el Layout correspondiente. Como en cualquier otro Layout, puedes añadirle nuevos elementos desde la paleta, eliminarlos y modificar las propiedades los que ya existen.

studioActivity04

En el archivo de recursos strings.xml se habrá añadido un nuevo recurso con el título predefinido de la Activity. Si quieres, aquí puedes ajustarlo a tus necesidades.

studioActivity05

En la carpeta res/menu se crea de forma automática, si no has modificado las opciones predefinidas en el asistente, un menú básico para esta nueva Activity. Realiza los ajustes oportunos sobre este menú en función del menú que desees para esta Activity, o elimina el archivo si no quieres utilizarlo.

studioActivity06

Dentro de la carpeta de fuentes (src) puedes comprobar que se crea también de forma automática el archivo Java con el código necesario para asociar este código fuente con el Layout correspondiente.

{code}
setContentView(R.layout.activity_main2);
{/code}

Además, incluye el código necesario para asociar el menú anterior con esta Activity. Si no deseas el menú, puedes eliminar ese bloque de código.

{code}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main_activity2, menu);
return true;
}
{/code}

Por último, dentro del archivo AndroidManifest.xml se habrá declarado esta nueva Activity. Para la nueva Activity se habrá declarado su nombre y su título asociado al recurso @string/title_activity____.

{code class="brush:xml; highlight:[25,26,27,28]"}

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="es.javiergarbedo.nuevaactivity"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="7"
        android:targetSdkVersion="19" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="es.javiergarbedo.nuevaactivity.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="es.javiergarbedo.nuevaactivity.MainActivity2"
            android:label="@string/title_activity_main_activity2" >
        </activity>
    </application>

</manifest>

{/code}

En caso de que hayas activado en el asistente la opción Launcher Activity, verás que además se habrá añadido en el archivo de manifiesto las siguientes líneas:

{code class="brush:xml"}

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

{/code}

Como puedes ver en la siguiente imagen, el filtro LAUNCHER crea un icono de acceso directo a la segunda Activity en el dispositivo, además de tener el icono correspondiente a la Activity principal que ya se tenía antes. Recuerda que aunque se muestren 2 iconos en la lista de aplicaciones, ambos corresponden a una única aplicación, como puedes comprobar en la lista de aplicaciones de la configuración del dispositivo.

studioActivity07 studioActivity08