martes, 3 de noviembre de 2015

Abrir otro activity usando Intent explicitos en android studio

   



¿Cómo abrir una segunda actividad al hacer click en un botón?

Las intenciones se utilizan como un mecanismo de mensajes dentro de la aplicación y entre las aplicaciones.

Un Intent se define genéricamente como una "intención" de hacer algo de trabajo. Los Intents encapsulan varios conceptos

Pueden usar los intentos para invocar a otras aplicaciones desde la aplicación. Puede usar los Intent para invocar los componentes internos o externos de su aplicación.

Abrir oto activity usando Intent explicitos en android studio


Las Intenciones se utilizan para realizar las siguientes tareas:

  • Para poner en marcha una actividad
  • Iniciar servicio, comunicarse con un servicio de la misma aplicación u otras. Una intención puede ser explícita o implícita.

Intención explícita:

En una intención explícita, en realidad especificamos la actividad que se requiere utilizar y esta tiene que responder a la intención. En otras palabras, designamos explícitamente el componente de destino.

Vamos a ver un ejemplo para poner en marcha una actividad utilizando intención explícita:

Lo que vamos hacer es crear una aplicación con dos botones en la ventana principal y al presionar estos botones que nos lleve a las ventanas respectivas que estamos invocando.

Paso 1:
Crear un proyecto con el nombre que guste y si ya lo tiene salte este paso.

Paso 2:
En el activity_main.xml diseñamos una ventana parecida a la imagen de abajo, que contenga 2 botones.


El código:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Actividad Principal"
        android:id="@+id/textView"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Ir ventana A"
        android:id="@+id/btnMain1" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Ir ventana B"
        android:id="@+id/btnMain2" />


</LinearLayout>

Paso 3:
Creamos un Blank Activity, para que nos cree la clase .java y su respectivo layout .xml. Según el nombre que le han puesto debe haberles creado los archivos por ejemplo: VentanaA_Activity.javaactivity_ventana_a_.xml respectivamente. Y creamos otro Blank Activity como por ejemplo con el nombre VentanaB_Activity.



Nota: Si usted a creado su archivo java y su archivo xml, sin usar la forma de creación del  Blank Activity que nos brinda android studio. Si usted a decidido crear su clase java y después su archivo xml uno por uno. Tendremos que listar la actividad en el AndroidManifest.xml

AndroidManifest.xml:
<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".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>
        
        <!--Para que se pueda abrir la actividad VentanaA_Activity-->
        <activity
            android:name=".VentanaA_Activity"
            android:label="@string/title_activity_ventana_a_" >
        </activity>
        <activity
            android:name=".VentanaB_Activity"
            android:label="@string/title_activity_ventana_b_" >
        </activity>
        
    </application>


Paso 4:
Diseñamos las ventanas creadas para que queden algo así como las imágenes de abajo.

El archivo activity_ventana_a_.xml:
El código:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".VentanaA_Activity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Esta en la Activity A"
        android:id="@+id/textView2"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />
</RelativeLayout>



El archivo activity_ventana_b_.xml:
El código:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".VentanaB_Activity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Esta en la Activity B"
        android:id="@+id/textView3"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />
</RelativeLayout>

El código que te permite ir de un Activity a otro

Paso 5:
Hora de la programación, lo que vamos hacer es programar los botones en el MainActivity para que puedan abrir la actividad correspondiente que nosotros le indicamos por medio de un Intent.

Código:

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {            

    private Button btnA,btnB;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnA=(Button)findViewById(R.id.btnMain1);
        btnB=(Button)findViewById(R.id.btnMain2);

        btnA.setOnClickListener(this);
        btnB.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {

        Intent explicit_intent;//Declaro el Intent

        switch (v.getId()){//Obtengo el ID del boton precionado

            case R.id.btnMain1://Si el ID es btnMain1
                
                //Instanciamos el Intent dandole:
                // el contexto y la clase a la cual nos deseamos dirigir
                explicit_intent = new Intent(this,VentanaA_Activity.class);

                //lo iniciamos pasandole la intencion
                startActivity(explicit_intent);
                break;

            case R.id.btnMain2://Si el ID es btnMain2
                explicit_intent = new Intent(this, VentanaB_Activity.class);
                startActivity(explicit_intent);
                break;
        }
    }
}


Y eso seria todo el proyecto completo. Lo subiré a Github por si te interese descargarlo:


Cesar GI

About Cesar GI

Lo que me importa es poder enseñar lo poco que se, por que asi como yo aprendo leyendo gracias a las personas que comparten sus conocimiento yo tambien quiero ayudar a la comunidad en español aportando lo poco que he aprendido hasta el momento.

1 comentarios:

Write comentarios