Aplicación de extensión para compartir variables globalmente

Estoy tratando de compartir dos ArrayLists en las distintas actividades de mi aplicación, usando el esquema que se explica aquí: ¿Cómo declarar las variables globales en Android? .

Aquí está mi subclase de aplicación:

public class GlobalVars extends Application{ ArrayList players = new ArrayList(); ArrayList playerNames = new ArrayList(); public ArrayList getPlayers(){ return players; } public ArrayList getPlayerNames(){ return playerNames; } public void setPlayers(ArrayList p){ players = p; } public void setPlayerNames(ArrayList pn){ playerNames = pn; } } 

Y usó el código:

  GlobalVars gv = (GlobalVars)getApplicationContext(); players = gv.getPlayers(); playerNames = gv.getPlayerNames(); 

Para acceder a estas variables. La primera línea allí donde defino gv arroja una classcastexception. Alguien sabe por qué?

Aquí está el código que agregué al manifiesto:

  

editar: para aclarar, aquí está mi manifiesto completo:

                 

    Para profundizar en la respuesta de Peter K, no necesita crear una segunda sección de para su clase de aplicación derivada. Simplemente necesita “cambiar el nombre” de su sección existente de al modificarla con la etiqueta android:name . También quiero señalar que se requiere el nombre de clase completo (como lo has hecho correctamente … descubrí esto por las malas).

     < ?xml version="1.0" encoding="utf-8"?>              

    Para ser claro,

      

    Es mi manifiesto existente. Para declarar otra aplicación dentro de mi manifiesto existente y / o la aplicación todos juntos, simplemente agregaría:

     android:name="com.XXXXXX.data.DataStore" 

    Entonces el resultado final será:

      

    Debe llamar a getApplication() en su actividad o servicio:

     GlobalVars gv = (GlobalVars)getApplication(); 

    Editar:

    Tiene definida dos veces en su manifiesto.