¿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.
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:
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:
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.java y activity_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:
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; } } }
1 comentarios:
Write comentariosxd
Reply