¿Cómo hacer que una actividad aparezca solo una vez en Android?

Hay muchas aplicaciones de Android que requieren que una actividad aparezca solo una vez cuando el usuario abre la aplicación por primera vez. Aquí, aprendamos cómo implementar esto en nuestra propia aplicación de Android.

¿Por qué podríamos necesitar que una actividad aparezca solo una vez?

  • Se puede usar para obtener la información de inicio de sesión del usuario u otra información única para que el usuario no tenga que pasar por las molestias de ingresar su información cada vez que abre la aplicación.
  • Puede usarse para mostrar información sobre la aplicación que el usuario no desea ver siempre.
  • Se puede usar para mostrar una animación única que agrega una mejor interfaz de usuario a la aplicación.

apper activity onle once

En este ejemplo, usemos SharedPreferences para implementar este proyecto. Consulte este artículo para obtener más información sobre SharedPreferences en detalle: Preferencias compartidas en Android con ejemplos .

Acercarse

Paso 1: Crear un nuevo proyecto

Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Java como lenguaje de programación.

Paso 2: Trabajando con la actividad que aparece solo una vez

Trabajando con el archivo activity_main.xml:

Comencemos trabajando con la actividad que debería aparecer solo una vez. En este ejemplo, activity_main.xml solo contendrá un ImageView y un TextView . Así es como se ve el archivo activity_main.xml :

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<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:background="#388e3c"
    android:orientation="vertical"
    tools:context=".MainActivity">
  
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/gfglog" />
  
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:fontFamily="sans-serif-condensed"
        android:text="Thanks for visiting GeeksforGeeks.\n\nI will be launched only once!"
        android:textColor="#f5f5f5"
        android:textSize="35sp" />
  
</LinearLayout>

La actividad se verá de la siguiente manera:

output ui

actividad_principal.xml

Trabajando con el archivo MainActivity.java:

El archivo MainActivity.java contendrá la mayor parte de la lógica de la aplicación en este ejemplo. Comencemos creando una string llamada prevStarted y configúrela en algún valor. Ahora en el método, verifique si ya tenemos el valor de prevStarted en SharedPreferences . Dado que se evaluará como falso cuando la aplicación se inicie por primera vez, inicie MainActivity (que queremos que aparezca solo una vez) y establezca el valor de prevStarted en SharedPreferences . Ahora, cada vez que la aplicación se inicie de nuevo, siempre comprobará si ya tenemos el valor de prevStarted almacenado en SharedPreferencesque siempre se evaluará como verdadero a partir de ahora. Por lo tanto, siempre lanzará la Actividad Secundaria (que queremos que aparezca siempre) de ahora en adelante. Así es como se ve nuestro archivo MainActivity.java :

MainActivity.java

import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
  
  
public class MainActivity extends AppCompatActivity {
    String prevStarted = "yes";
    @Override
    protected void onResume() {
        super.onResume();
        SharedPreferences sharedpreferences = getSharedPreferences(getString(R.string.app_name), Context.MODE_PRIVATE);
        if (!sharedpreferences.getBoolean(prevStarted, false)) {
            SharedPreferences.Editor editor = sharedpreferences.edit();
            editor.putBoolean(prevStarted, Boolean.TRUE);
            editor.apply();
        } else {
            moveToSecondary();
        }
    }
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
  
    public void moveToSecondary(){
        // use an intent to travel from one activity to another.
        Intent intent = new Intent(this,SecondaryActivity.class);
        startActivity(intent);
    }
}

Paso 3: Crear la actividad que aparece siempre

Trabajando con el archivo activity_secondary.xml:

Ahora que hemos terminado con casi toda la lógica de la aplicación, crearemos la actividad que queremos que aparezca siempre, actividad_secundaria.xml . Para este ejemplo, contendrá solo ImageView y TextView . Así es como se ve nuestra actividad_secundaria.xml :

activity_secondary.xml

<?xml version="1.0" encoding="utf-8"?>
<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"
    tools:context=".MainActivity"
    android:background="#388e3c"
    android:orientation="vertical">
    
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/gfg"
        android:layout_gravity="center_horizontal"/>
    
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="15dp"
        android:gravity="center_horizontal"
        android:text="I will be launched always.\nJust as you can count on GeeksforGeeks always!"
        android:textColor="#f5f5f5"
        android:textSize="30sp"/>
    
</LinearLayout>

La actividad se verá de la siguiente manera:

output ui

actividad_secundaria.xml

Trabajando con el archivo SecondaryActivity.java:

No hay nada que hacer con el archivo SecondaryActivity.java . Así es como se ve el archivo SecondaryActivity.java :

SecondaryActivity.java

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
  
public class SecondaryActivity extends AppCompatActivity {
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_secondary);
    }
}

Paso 4: Configuración de AndroidManifest.xml

Es importante verificar que la primera actividad que se abre cuando se inicia la aplicación es MainActivity.java (La actividad que queremos que aparezca solo una vez). Para ello, abra el archivo AndroidManifest.xml y asegúrese de que tenemos la etiqueta de filtro de intención dentro de la etiqueta de actividad que debería aparecer solo una vez. Así es como se ve nuestro archivo AndroidManifest.xml :

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="yourPackageName">
  
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".SecondaryActivity"></activity>
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
  
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
  
</manifest>

Salida: ejecutar en el emulador

Publicación traducida automáticamente

Artículo escrito por agarwalkeshav8399 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *