Las intenciones son un tema fundamental para los desarrolladores de Android. Es imposible construir aplicaciones de Android sin entrar en contacto con intenciones. En este tutorial, te enseñaré sobre los intentos de la A a la Z.
En un partido de fútbol, los compañeros de equipo pasan el balón alrededor del campo con el objetivo de enviarlo a la meta de su oponente. El balón se pasa del portero del equipo a sus defensores. A continuación, encuentra su camino hacia los centrocampistas, y si las cosas salen como están planeadas, uno de los delanteros lo envía a la red del oponente. Eso es asumiendo que el portero del otro lado no pudo mantenerlo alejado.!
En Android, la capacidad de enviar mensajes es posible gracias a la Intención
objeto. Con la ayuda de los intentos, los componentes de Android pueden solicitar funcionalidad de otros componentes de Android. Cuando abre la aplicación de Instagram en su teléfono y la usa para tomar una foto, acaba de usar una intención. Los intentos también ayudan a comunicarse entre las partes de una aplicación; el movimiento de una pantalla (actividad) a otra es posible gracias a los intentos.
Míralo de esta manera: todos los componentes (aplicaciones y pantallas) del dispositivo Android están aislados. La única forma en que se comunican es a través de intenciones..
Como se mencionó anteriormente, puede usar los intentos para iniciar diferentes componentes: actividades, servicios y receptores de difusión.
Para iniciar una actividad, harás uso del método. startActivity
(intención)
.
Aquí hay un fragmento de código que muestra cómo comenzar otra actividad desde un intento.
Intent numbersIntent = new Intent (MainActivity.this, NumbersActivity.class); startActivity (numbersIntent);
Primero, creamos un nuevo Intención
objetar y pasarlo NúmerosActividad
clase. Entonces comenzamos una nueva actividad usando esa intención..
Android admite dos tipos de intentos: explícito e implícito. Cuando una aplicación define su componente objetivo en una intención, es una intención explícita. Cuando la aplicación no nombra un componente de destino, es una intención implícita.
El fragmento de código del código anterior es un ejemplo de intención explícita. Míralo de nuevo.
Intent numbersIntent = new Intent (MainActivity.this, NumbersActivity.class); startActivity (numbersIntent);
aquí, NúmerosActividad
es el componente objetivo de nuestra Actividad principal
. Esto significa que NúmerosActividad
Es el componente definido que será llamado por el sistema Android. Es importante tener en cuenta (como en el ejemplo anterior), que los intentos explícitos se usan normalmente dentro de una aplicación, porque eso le da al desarrollador el mayor control sobre qué clase se lanzará.
Aquí hay una intención implícita:
Intención intención = nueva Intención (Intent.ACTION_VIEW, Uri.parse ("http://www.tutsplus.com")); startActivity (intención);
Si tiene el código anterior en su base de código, su aplicación puede iniciar un componente del navegador para una determinada URL a través de un intento. Pero, ¿cómo identifica el sistema Android los componentes que pueden reaccionar ante una determinada intención??
Un componente puede ser registrado a través de un filtro de intención Para una acción específica. Los filtros de intención se pueden registrar para componentes estáticamente en el AndroidManifest.xml. Aquí hay un ejemplo que registra un componente como un visor web:
Vamos a escribir un código para ver cómo funciona. En esta sección, construirá una pequeña aplicación para probar ambos estilos de intención. La aplicación tendrá una pequeña forma para ingresar un nombre y apellido. Cuando el Enviar al hacer clic en el botón, ambos valores ingresados se pasarán a otra actividad. También habrá un botón para iniciar un navegador de su elección. El navegador elegido abrirá http://code.tutsplus.com.
Abre Android Studio y genera tu Actividad principal
. Puede configurar el nombre del paquete para com.tutsplus.code.android.droidintent.
Tu Actividad principal
Comenzará con algunas importaciones y la declaración de clase:
paquete com.tutsplus.code.android.droidintent; import android.content.Intent; importar android.net.Uri; importar android.support.v7.app.AppCompatActivity; importar android.os.Bundle; importar android.view.View; importar android.widget.Button; importar android.widget.EditText; La clase pública MainActivity extiende AppCompatActivity
Entonces anularás la onCreate ()
método para inicializar la actividad con cualquier estado guardado y el diseño de la actividad (lo crearemos más adelante).
@Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); // aquí están los controladores de botones
A continuación, obtendrá referencias a cada uno de los botones definidos en el diseño y adjuntará un detector de clics a cada uno de ellos..
botón final submitButton = (Button) findViewById (R.id.submit_button); submitButton.setOnClickListener (new View.OnClickListener () @Override public void onClick (View v) EditText firstName = (EditText) findViewById (R.id.first_name_text); EditText lastName = (EditText) findViewById ; String firstNameString = firstName.getText (). ToString (); String lastNameString = lastName.getText (). ToString (); Intent submitIntent = new Intent (MainActivity.this, ShowActivity.class); submitIntent.putExtra "" firstNameString); submitIntent.putExtra ("lastNameString", lastNameString); startActivity (submitIntent););
Para el Enviar botón, pones un OnClickListener
para activar una acción cada vez que se hace clic en el botón. Cuando se produce un clic, tomamos el nombre y el apellido de la vista y los enviamos a la siguiente actividad: ShowActivity
. El componente de destino se define explícitamente en la intención, por lo que es un ejemplo de intención explícita.
botón final browserButton = (Button) findViewById (R.id.browser_button); browserButton.setOnClickListener (new View.OnClickListener () @Override public void onClick (View v) Intent intent = new Intent (Intent.ACTION_VIEW, Uri.parse ("https://code.tutsplus.com")); startActivity (intención););
Para el botón del navegador, el OnClickListener
creará una nueva intención de lanzar cualquier aplicación que coincida con el filtro: un ACTION_VIEW
que debe manejar una URL web. En otras palabras, lanza un navegador web. Si tiene más de una aplicación de navegador instalada en su dispositivo, se le pedirá que seleccione una para realizar la acción de abrir el sitio web. Este es un ejemplo de una intención implícita..
Actividad principal
DiseñoEl diseño para Actividad principal
Será muy simple para los fines de este tutorial..
Aquí tienes dos Vista de texto
y dos Editar texto
indicando Primer Nombre y Apellido respectivamente. También hay un botón para enviar los nombres y otro para iniciar el navegador..
ShowActivity
Para completar nuestra aplicación, necesitamos crear una actividad para manejar la intención explícita definida anteriormente. Crear una nueva actividad llamada ShowActivity
. Esta es la actividad donde se mostrará el resultado de ingresar el nombre y el apellido. Esto es lo que debería ser:
paquete com.tutsplus.code.android.droidintent; importar android.support.v7.app.AppCompatActivity; importar android.os.Bundle; importar android.widget.TextView; La clase pública ShowActivity amplía AppCompatActivity @Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_show); Extras del paquete = getIntent (). GetExtras (); String inputFirstName = extras.getString ("firstNameString"); String inputLastName = extras.getString ("lastNameString"); TextView showFirstName = (TextView) findViewById (R.id.show_first_name); TextView showLastName = (TextView) findViewById (R.id.show_last_name); showFirstName.setText (inputFirstName); showLastName.setText (inputLastName);
En esta actividad, comienza por obtener las cadenas pasadas de la Actividad principal
. Puede obtener una referencia a la intención que desencadenó el lanzamiento de esta actividad con el getIntent ()
función. Luego puede acceder a las cadenas que se le pasaron usando getExtras (). getString ()
. Finalmente, después de obtener las instancias de TextView del diseño, muestra los valores que obtuvo..
El diseño de esta actividad es simple:
Ahora puedes construir tu aplicación y probarla en tu dispositivo Android!
También puede hacer uso de paquetes al pasar datos a través de intentos.
los Haz
la clase le permite almacenar datos complejos y admite tipos de datos como cadenas, caracteres, booleanos, enteros, etc. Aquí hay un ejemplo de cómo parte de MainActivity.java se vería si lo usas Haz
.
// Creando el objeto Bundle Bundle b = new Bundle (); // Almacenamiento de datos en el paquete b.putString ("firstNameString", firstNameString); b.putString ("lastNameString", lastNameString); // Creación del objeto Intent Intent submitIntent = new Intent (MainActivity.this, ShowActivity.class); // Almacenar el objeto del paquete en la intención submitIntent.putExtra (b); startActivity (submitIntent);
En este tutorial, obtuvimos una breve introducción al uso de intenciones para crear actividades en Android. Observamos la diferencia entre intentos explícitos e implícitos, y codificamos un ejemplo simple que usaba cada tipo.
Puedes leer más sobre intenciones en la documentación de Android. Comprender cómo funcionan es muy importante. A medida que construyas más aplicaciones, encontrarás muchos tipos diferentes de Intenciones y formas de usarlas..
Y mientras tanto, echa un vistazo a algunas de nuestras otras publicaciones sobre el desarrollo de aplicaciones para Android!