Requisitos previos:
- Fundamentos de desarrollo de aplicaciones de Android para principiantes
- Guía para instalar y configurar Android Studio
- android | Comenzando con la primera aplicación/proyecto de Android
- android | Ejecutando tu primera aplicación de Android
Este artículo tiene como objetivo informar sobre las intenciones implícitas y explícitas y cómo usarlas en una aplicación de Android.
¿Qué es la intención en Android?
Intent es un objeto de mensajería que pasa entre componentes como servicios, proveedores de contenido, actividades, etc. Normalmente , el método startActivity() se usa para invocar cualquier actividad.
Algunas de las funciones generales de la intención son:
- Empieza el servicio
- actividad de lanzamiento
- Mostrar página web
- Mostrar lista de contactos
- Difusión de mensajes
Métodos y su Descripción
Métodos | Descripción |
---|---|
Contexto.startActivity() | Esto es para lanzar una nueva actividad o hacer que una actividad existente se convierta en acción. |
Contexto.startService() | Esto es para iniciar un nuevo servicio o entregar instrucciones para un servicio existente. |
Contexto.sendBroadcast() | Esto es para entregar el mensaje a los receptores de difusión. |
Clasificación
de intenciones Hay dos tipos de intenciones
1. Implicit Intent 2. Explicit Intent
- Intención implícita: al usar la intención implícita, el componente no puede especificarse. Una acción a realizar se declara por intención implícita. Luego, el sistema operativo Android filtrará el componente que responderá a la acción.
Por ejemplo
En el ejemplo anterior, no se especifica ningún componente, sino que se realiza una acción, es decir, se abrirá una página web. Mientras escribe el nombre de su página web deseada y haga clic en el botón ‘CLICK’. Su página web está abierta.
Cómo crear una aplicación de Android para abrir una página web usando una intención implícita (con un ejemplo)
- Paso 1: Cree un archivo XML y un archivo Java. Consulte los requisitos previos para obtener más información sobre este paso.
- Paso 2: abra el archivo «actividad_principal.xml» y agregue los siguientes widgets en un diseño de restricción .
1. Un EditText para ingresar texto.
2. Un botón para abrir la página web.
Además, asigne ID para cada componente como se muestra en la imagen y el código a continuación. La ID asignada para un componente ayuda en la identificación del componente y se puede usar fácilmente en los archivos Java.
Sintaxis:android:id="@+id/id_name"
Aquí los ID dados: editText1 , button1
Esto creará la interfaz de usuario de la aplicación. - Paso 3: ahora, después de la interfaz de usuario, este paso creará el backend de la aplicación. Para esto, abra el archivo “MainActivity.java” e instancia el componente (Botón) creado en el archivo XML usando el método findViewById(). Este método vincula el objeto creado a los componentes de la interfaz de usuario con la ayuda de la ID asignada.
Sintaxis general:
objeto ComponentType = (ComponentType)findViewById(R.id.IdOfTheComponent);
Sintaxis para componentes usados (EditText, Button):
EditText editText = (EditText)findViewById(R.id.editText1);
Botón botón = (Botón)findViewById(R.id.button1); - Paso 4: este paso implica configurar las operaciones para mostrar el mensaje Toast. Estas operaciones son las siguientes:
a). Primero agregue el oyente en el botón y este botón abrirá la página web.
button.setOnClickListener(nueva Vista.OnClickListener() {});b). Cree una variable de tipo String para almacenar el valor de ‘EditText’. El valor se acepta y se convierte en string.
String url = editText1.getText().toString();
C). Cree una clase de objeto Intent MainActivity.java para abrir la página web.
Intención intención = nueva Intención (Intent.ACTION_VIEW, Uri.parse(url));
d). El método startActivity() comienza a llamar a una página web para abrirla especificada por la intención.
iniciarActividad(intención);
Por lo tanto, el fragmento de código para Intención implícita:
String url = editText1.getText().toString(); Intent intent=new Intent(Intent.ACTION_VIEW, Uri.parse(url)); startActivity(intent);
Código completo de Intención implícita
actividad_principal.xml
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
android.support.constraint.ConstraintLayout
android:layout_width
=
"match_parent"
android:layout_height
=
"match_parent"
tools:context
=
".MainActivity"
>
<!-- add an edittext to input text -->
<
EditText
android:id
=
"@+id/editText1"
android:layout_width
=
"0dp"
android:layout_height
=
"wrap_content"
android:layout_alignParentTop
=
"true"
android:layout_centerHorizontal
=
"true"
android:layout_marginTop
=
"136dp"
android:ems
=
"10"
app:layout_constraintEnd_toEndOf
=
"parent"
app:layout_constraintStart_toStartOf
=
"parent"
app:layout_constraintTop_toTopOf
=
"parent"
/>
<!-- add a button for click -->
<
Button
android:id
=
"@+id/button1"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:layout_below
=
"@+id/editText1"
android:layout_centerHorizontal
=
"true"
android:layout_marginTop
=
"49dp"
android:layout_marginEnd
=
"132dp"
android:text
=
"Click"
app:layout_constraintEnd_toEndOf
=
"@+id/editText1"
app:layout_constraintTop_toBottomOf
=
"@+id/editText1"
/>
</
android.support.constraint.ConstraintLayout
>
MainActivity.java
package
org.geeksforgeeks.implicitIntent_example;
import
android.app.Activity;
import
android.content.Intent;
import
android.net.Uri;
import
android.os.Bundle;
import
android.view.View;
import
android.widget.Button;
import
android.widget.EditText;
public
class
MainActivity
extends
Activity {
@Override
protected
void
onCreate(Bundle savedInstanceState)
{
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Bind the components to their respective objects
// by assigning their IDs
// with the help of findViewById() method
final
EditText editText1 = (EditText)findViewById(R.id.editText1);
Button button = (Button)findViewById(R.id.button1);
// implementation of onClick event for Implicit Intent
button.setOnClickListener(
new
View.OnClickListener() {
@Override
public
void
onClick(View v)
{
// performing webpage open action
String url = editText1.getText().toString();
Intent intent =
new
Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
}
});
}
}
Producción:
- Paso 1: Cree un archivo XML y un archivo Java. Consulte los requisitos previos para obtener más información sobre este paso.
- Intención explícita: con la intención explícita se puede especificar cualquier otro componente. En otras palabras, el componente de destino se especifica mediante una intención explícita. Por lo tanto, solo se invocará el componente de destino especificado.
Por ejemplo:
En el ejemplo anterior, hay dos actividades (FirstActivity, SecondActivity). Cuando hace clic en el botón ‘IR A OTRA ACTIVIDAD’ en la primera actividad, luego pasa a la segunda actividad. Cuando hace clic en el botón ‘IR A LA ACTIVIDAD DE INICIO’ en la segunda actividad, entonces pasa a la primera actividad. Esto se está haciendo a través de intención explícita.
Cómo crear una aplicación de Android para pasar a la siguiente actividad usando intención explícita (con ejemplo)
- Paso 1: Cree un archivo XML y un archivo Java. Consulte los requisitos previos para obtener más información sobre este paso.
- Paso 2: abra el archivo «actividad_principal.xml» y agregue los siguientes widgets en un diseño de restricción .
1. Un botón para pasar a la segunda actividad.
2. Un TextView para escribir texto.
Además, asigne ID para cada componente (Botón, TextView) como se muestra en la imagen y el código a continuación. La ID asignada para un componente ayuda en la identificación del componente y se puede usar fácilmente en los archivos Java.
Sintaxis:android:id="@+id/id_name"
Aquí los ID dados: Button01 , TextView01 .
Esto hará que la interfaz de usuario de la aplicación. - Paso 3: ahora, después de la interfaz de usuario, este paso creará el backend de la aplicación. Para esto, abra el archivo “MainActivity.java” e instancia el componente (Button, TextView) creado en el archivo XML usando el método findViewById(). Este método vincula el objeto creado a los componentes de la interfaz de usuario con la ayuda de la ID asignada.
Sintaxis general:
objeto ComponentType = (ComponentType)findViewById(R.id.IdOfTheComponent);
Sintaxis para componentes usados (Botón, TextView):
1. Botón botón = (Botón)findViewById(R.id.Button01);
2. TextView textView = (TextView)findViewById(R.id.TextView01); - Paso 4: este paso implica configurar las operaciones para crear una intención explícita. Estas operaciones son las siguientes:
una. Primero agregue el oyente en el botón y al usar este botón pasará a otra actividad.
button1.setOnClickListener(nueva Vista.OnClickListener() {});
b. Ahora, crea una intención.
Intent i = new Intent(getApplicationContext(), SecondActivityName.class);Parámetros: Esto es tener dos parámetros:
- getApplicationContext(): Devuelve el contexto de toda la aplicación.
- OtherActivityName.class: debe usar el nombre de su actividad aquí.
Por lo tanto, el código para hacer una intención explícita es:
Intent i = new Intent(getApplicationContext(), ActivityTwo.class);
C. Ahora inicie la actividad dirigida.
startActivity(i): Esto inicia la actividad objetivo.
El fragmento de código para la intención explícita:Intent i = new Intent(getApplicationContext(), ActivityTwo.class); startActivity(i);
- Paso 5: Ahora tenemos que crear una segunda actividad como actividad de destino.
Los pasos para crear la segunda actividad son los siguientes:
proyecto Android> Archivo> nuevo> Actividad> Actividad vacía
- Paso 6: Ahora abra su segundo archivo xml.
Agregue Button y TextView para volver a la actividad de inicio y para escribir texto sobre la actividad, respectivamente. Asigne ID a Button y Textview. La segunda actividad se muestra a continuación: - Paso 7: Ahora, abra el archivo java de su segunda actividad y realice la siguiente operación.
una. Primero agregue el oyente en el botón y al usar este botón se moverá a la actividad de inicio.
button1.setOnClickListener(nueva Vista.OnClickListener() {});b. Ahora, crea una intención.
Intent i = new Intent(getApplicationContext(), OtherActivityName.class);Por lo tanto, el código para hacer una intención explícita es:
Intent i = new Intent(getApplicationContext(), MainActivity.class);
C. Ahora inicie la actividad dirigida.
startActivity(i): Esto inicia la actividad objetivo.
El código para mostrar el mensaje Toast:
Intent i = new Intent(getApplicationContext(), MainActivity.class);
iniciarActividad(i); - Paso 8: Ahora ejecute la aplicación y opere de la siguiente manera:
cuando se abre la aplicación, muestra el botón «IR A OTRA ACTIVIDAD».
Haga clic en el botón «IR A OTRA ACTIVIDAD».
Luego pasará a la segunda actividad.
Además, obtendrá un botón «IR A LA ACTIVIDAD DE INICIO» en la segunda actividad. Cuando haga clic en esto, pasará a la actividad de inicio.
Código completo de intención explícita
actividad_principal.xml
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
android.support.constraint.ConstraintLayout
android:layout_width
=
"match_parent"
android:layout_height
=
"match_parent"
tools:context
=
"org.geeksforgeeks.explicit_intent.MainActivity"
>
<!-- add a button to move to next activity -->
<
Button
android:id
=
"@+id/Button01"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:layout_alignParentLeft
=
"true"
android:layout_below
=
"@+id/TextView01"
android:layout_marginTop
=
"209dp"
android:onClick
=
"onClick"
android:text
=
"Go To Other Activity"
app:layout_constraintEnd_toEndOf
=
"parent"
app:layout_constraintStart_toStartOf
=
"parent"
app:layout_constraintTop_toTopOf
=
"parent"
tools:ignore
=
"OnClick"
/>
<!-- add a TextView to write some text on activity -->
<
TextView
android:id
=
"@+id/TextView01"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:layout_alignLeft
=
"@+id/Button01"
android:layout_alignParentTop
=
"true"
android:layout_marginTop
=
"44dp"
android:minHeight
=
"60dip"
android:text
=
"This is First Activity"
android:textSize
=
"20sp"
app:layout_constraintEnd_toEndOf
=
"parent"
app:layout_constraintStart_toStartOf
=
"parent"
app:layout_constraintTop_toTopOf
=
"parent"
/>
</
android.support.constraint.ConstraintLayout
>
MainActivity.java
package
org.geeksforgeeks.explicit_intent;
import
android.os.Bundle;
import
android.app.Activity;
import
android.content.Intent;
import
android.view.View;
import
android.view.View.OnClickListener;
import
android.widget.Button;
public
class
MainActivity
extends
Activity {
// Defining the object for button
Button button1;
@Override
public
void
onCreate(Bundle savedInstanceState)
{
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Bind the components to their respective objects
// by assigning their IDs
// with the help of findViewById() method
button1 = (Button)findViewById(R.id.Button01);
button1.setOnClickListener(
new
OnClickListener() {
public
void
onClick(View view)
{
// Creating explicit intent
Intent i =
new
Intent(getApplicationContext(),
ActivityTwo.
class
);
startActivity(i);
}
});
}
}
actividad_dos.xml
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
android.support.constraint.ConstraintLayout
android:layout_width
=
"match_parent"
android:layout_height
=
"match_parent"
tools:context
=
"org.geeksforgeeks.explicit_intent.ActivityTwo"
>
<!-- add a button for moving to home activity -->
<
Button
android:id
=
"@+id/Button01"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:layout_below
=
"@+id/TextView01"
android:layout_alignParentLeft
=
"true"
android:layout_marginBottom
=
"220dp"
android:onClick
=
"onClick"
android:text
=
"Go to Home Activity"
app:layout_constraintBottom_toBottomOf
=
"parent"
app:layout_constraintEnd_toEndOf
=
"parent"
app:layout_constraintHorizontal_bias
=
"0.533"
app:layout_constraintStart_toStartOf
=
"parent"
tools:ignore
=
"OnClick"
/>
<!-- add a TextView to write some text on activity -->
<
TextView
android:id
=
"@+id/TextView01"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:layout_alignLeft
=
"@+id/Button01"
android:layout_alignParentTop
=
"true"
android:layout_margin
=
"71dp"
android:layout_marginTop
=
"144dp"
android:layout_marginEnd
=
"88dp"
android:layout_marginRight
=
"88dp"
android:minHeight
=
"60dip"
android:text
=
"This is Second Activity"
android:textSize
=
"20sp"
app:layout_constraintEnd_toEndOf
=
"parent"
app:layout_constraintTop_toTopOf
=
"parent"
/>
</
android.support.constraint.ConstraintLayout
>
ActividadDos.java
package
org.geeksforgeeks.explicit_intent;
import
android.app.Activity;
import
android.content.Intent;
import
android.os.Bundle;
import
android.view.View;
import
android.view.View.OnClickListener;
import
android.widget.Button;
public
class
ActivityTwo
extends
Activity {
// Defining the object for button
Button button1;
@Override
public
void
onCreate(Bundle bundle)
{
super
.onCreate(bundle);
setContentView(R.layout.activity_two);
// Bind the components to their respective objects
// by assigning their IDs
// with the help of findViewById() method
button1 = (Button)findViewById(R.id.Button01);
button1.setOnClickListener(
new
OnClickListener() {
public
void
onClick(View view)
{
// Creating explicit intent
Intent i =
new
Intent(getApplicationContext(),
MainActivity.
class
);
startActivity(i);
}
});
}
}
Producción:
- Paso 1: Cree un archivo XML y un archivo Java. Consulte los requisitos previos para obtener más información sobre este paso.
Publicación traducida automáticamente
Artículo escrito por shamikhfaraz y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA