variable usar studio publicas publica globales for declarar crear all activities android global-variables

publicas - usar variables globales en android studio



Variable global de Android (14)

¿Cómo puedo crear una variable global mantener los valores dentro del ciclo de vida de la aplicación, independientemente de la actividad que se ejecute?


¡¡¡¡Fácil!!!!

Aquellas variables a las que quieres acceder como variable global, puedes declararlas como variables estáticas. Y ahora, puedes acceder a esas variables usando

classname.variablename;

public class MyProperties { private static MyProperties mInstance= null; static int someValueIWantToKeep; protected MyProperties(){} public static synchronized MyProperties getInstance(){ if(null == mInstance){ mInstance = new MyProperties(); } return mInstance; }

}

MyProperites.someValueIWantToKeep;

¡Eso es! ;)


Esta variable global funciona para mi proyecto:

public class Global { public static int ivar1, ivar2; public static String svar1, svar2; public static int[] myarray1 = new int[10]; } // How to use other or many activity Global.ivar1 = 10; int i = Global.ivar1;


Hay algunas maneras diferentes en que puede lograr lo que está pidiendo.

1.) Extienda la clase de aplicación y cree una instancia de su controlador y modelo de objetos allí.

public class FavoriteColorsApplication extends Application { private static FavoriteColorsApplication application; private FavoriteColorsService service; public FavoriteColorsApplication getInstance() { return application; } @Override public void onCreate() { super.onCreate(); application = this; application.initialize(); } private void initialize() { service = new FavoriteColorsService(); } public FavoriteColorsService getService() { return service; } }

Luego, puede llamar a su singleton desde su objeto de aplicación personalizado en cualquier momento:

public class FavoriteColorsActivity extends Activity { private FavoriteColorsService service = null; private ArrayAdapter<String> adapter; private List<String> favoriteColors = new ArrayList<String>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_favorite_colors); service = ((FavoriteColorsApplication) getApplication()).getService(); favoriteColors = service.findAllColors(); ListView lv = (ListView) findViewById(R.id.favoriteColorsListView); adapter = new ArrayAdapter<String>(this, R.layout.favorite_colors_list_item, favoriteColors); lv.setAdapter(adapter); }

2.) Puede hacer que su controlador solo cree una instancia de singleton de sí mismo:

public class Controller { private static final String TAG = "Controller"; private static sController sController; private Dao mDao; private Controller() { mDao = new Dao(); } public static Controller create() { if (sController == null) { sController = new Controller(); } return sController; } }

Luego, simplemente puede llamar al método de creación desde cualquier Actividad o Fragmento y creará un nuevo controlador si no existe uno, de lo contrario, devolverá el controlador preexistente.

3.) Finalmente, hay un marco pulido creado en Square que proporciona inyección de dependencia dentro de Android. Se llama Dagger . No voy a entrar en cómo usarlo aquí, pero es muy hábil si necesitas ese tipo de cosas.

Espero haberte dado suficientes detalles sobre cómo puedes hacer lo que esperas.


Intenta como esto:

Crear una clase de datos compartida:

SharedData.java

import android.app.Application; /** * Created by kundan on 6/23/2015. */ public class Globals { private static Globals instance = new Globals(); // Getter-Setters public static Globals getInstance() { return instance; } public static void setInstance(Globals instance) { Globals.instance = instance; } private String notification_index; private Globals() { } public String getValue() { return notification_index; } public void setValue(String notification_index) { this.notification_index = notification_index; } }

Declaró / Inicia una instancia de clase globalmente en aquellas clases en las que desea establecer / obtener datos (usando este código antes del método onCreate() ):

Globals sharedData = Globals.getInstance();

Establecer datos:

sharedData.setValue("kundan");

Obtener datos:

String n = sharedData.getValue();


Podrías usar las preferencias de la aplicación. Se puede acceder a ellos desde cualquier actividad o pieza de código, siempre que pase el objeto Context, y son privados para la aplicación que los utiliza, por lo que no debe preocuparse por exponer valores específicos de la aplicación, a menos que trate con enrutados dispositivos Aun así, podría usar esquemas de hashing o cifrado para guardar los valores. Además, estas preferencias se almacenan desde una aplicación ejecutada a la siguiente. Here hay algunos ejemplos de código que puedes ver.


Puedes crear una Global Class como esta:

public class GlobalClass extends Application{ private String name; private String email; public String getName() { return name; } public void setName(String aName) { name = aName; } public String getEmail() { return email; } public void setEmail(String aEmail) { email = aEmail; } }

Entonces defínelo en el manifiesto:

<application android:name="com.example.globalvariable.GlobalClass" ....

Ahora puedes establecer valores para una variable global como esta:

final GlobalClass globalVariable = (GlobalClass) getApplicationContext(); globalVariable.setName("Android Example context variable");

Puede obtener esos valores como este:

final GlobalClass globalVariable = (GlobalClass) getApplicationContext(); final String name = globalVariable.getName();

Por favor encuentre el ejemplo completo de este blog. Variables globales


Puedes usar un Singleton Pattern como este:

package com.ramps; public class MyProperties { private static MyProperties mInstance= null; public int someValueIWantToKeep; protected MyProperties(){} public static synchronized MyProperties getInstance() { if(null == mInstance){ mInstance = new MyProperties(); } return mInstance; } }

En tu aplicación puedes acceder a tu singleton de esta manera:

MyProperties.getInstance().someValueIWantToKeep


Si es posible, debe declarar las variables que necesita mantener vivas que no hayan sido eliminadas por Garbage Collector o Unload by OS en el archivo .so Para hacerlo, debe codificar por C / C ++ y compilar en el archivo .so lib y cárgalo en tu mainActivity.


Técnicamente, esto no responde a la pregunta, pero recomendaría usar la base de datos de Sala en lugar de cualquier variable global. https://developer.android.com/topic/libraries/architecture/room.html Incluso si ''solo'' necesita almacenar una variable global y no es gran cosa y no, pero usar la base de datos Room es lo más elegante , forma nativa y bien apoyada de mantener los valores en torno al ciclo de vida de la actividad. Esto ayudará a prevenir muchos problemas, especialmente la integridad de los datos. Entiendo que la base de datos y la variable global son diferentes, pero use Room por motivos de mantenimiento del código, estabilidad de la aplicación e integridad de los datos.


Utilice SharedPreferences para almacenar y recuperar variables globales.

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); String userid = preferences.getString("userid", null);


Verifiqué una respuesta similar, pero las que se dan aquí no se ajustan a mis necesidades. Encuentro algo que, desde mi punto de vista, es lo que estás buscando. El único punto negro posible es un asunto de seguridad (o tal vez no) ya que no sé sobre seguridad.

Sugiero usar la interfaz (no es necesario usar Class con el constructor y así ...), ya que solo tienes que crear algo como:

public interface ActivityClass { public static final String MYSTRING_1 = "STRING"; public static final int MYINT_1 = 1; }

Luego, puede acceder a cualquier lugar dentro de sus clases usando lo siguiente:

int myInt = ActivityClass.MYINT_1; String myString = ActivityClass.MYSTRING_1;


Puede extender la clase base android.app.Application y agregar variables miembro de esta manera:

public class MyApplication extends Application { private String someVariable; public String getSomeVariable() { return someVariable; } public void setSomeVariable(String someVariable) { this.someVariable = someVariable; } }

En su manifiesto de Android, debe declarar la clase que implementa android.app.Application (agregue el atributo android:name=".MyApplication" a la etiqueta de aplicación existente):

<application android:name=".MyApplication" android:icon="@drawable/icon" android:label="@string/app_name">

Luego, en tus actividades puedes obtener y establecer la variable de esta manera:

// set ((MyApplication) this.getApplication()).setSomeVariable("foo"); // get String s = ((MyApplication) this.getApplication()).getSomeVariable();


// My Class Global Variables Save File Global.Java public class Global { public static int myVi; public static String myVs; } // How to used on many Activity Global.myVi = 12; Global.myVs = "my number"; ........ ........ ........ int i; int s; i = Global.myVi; s = Global.myVs + " is " + Global.myVi;


import android.app.Application; public class Globals extends Application { private static Globals instance = null; private static int RecentCompaignID; private static int EmailClick; private static String LoginPassword; static String loginMemberID; private static String CompaignName = ""; private static int listget=0; //MailingDetails private static String FromEmailadd=""; private static String FromName=""; private static String ReplyEmailAdd=""; private static String CompaignSubject=""; private static int TempId=0; private static int ListIds=0; private static String HTMLContent=""; @Override public void onCreate() { super.onCreate(); instance = this; } public static Globals getInstance() { return instance; } public void setRecentCompaignID(int objRecentCompaignID) { RecentCompaignID = objRecentCompaignID; } public int getRecentCompaignID() { return RecentCompaignID; } public void setLoginMemberID(String objloginMemberID) { loginMemberID = objloginMemberID; } public String getLoginMemberID() { return loginMemberID; } public void setLoginMemberPassword(String objLoginPassword) { LoginPassword = objLoginPassword; } public String getLoginMemberPassword() { return LoginPassword; } public void setEmailclick(int id) { EmailClick = id; } public int getEmailClick() { return EmailClick; } public void setCompaignName(String objCompaignName) { CompaignName=objCompaignName; } public String getCompaignName() { return CompaignName; } public void setlistgetvalue(int objlistget) { listget=objlistget; } public int getlistvalue() { return listget; } public void setCompaignSubject(String objCompaignSubject) { CompaignSubject=objCompaignSubject; } public String getCompaignSubject() { return CompaignSubject; } public void setHTMLContent(String objHTMLContent) { HTMLContent=objHTMLContent; } public String getHTMLContent() { return HTMLContent; } public void setListIds(int objListIds) { ListIds=objListIds; } public int getListIds() { return ListIds; } public void setReplyEmailAdd(String objReplyEmailAdd) { ReplyEmailAdd=objReplyEmailAdd; } public String getReplyEmailAdd() { return ReplyEmailAdd; } public void setFromName(String objFromName) { FromName=objFromName; } public String getFromName() { return FromName; } public void setFromEmailadd(String objFromEmailadd) { FromEmailadd=objFromEmailadd; } public String getFromEmailadd() { return FromEmailadd; } }