Foros del Web » Programación para mayores de 30 ;) » Java »

Pasar Variables o Usar variables Globales

Estas en el tema de Pasar Variables o Usar variables Globales en el foro de Java en Foros del Web. Hola chicos.. de nuevo aqui preguntando. busco en internet pero no busco una solucion CONCRETA asi que les vengo a preguntar. Actualemnte estoy trabajando en ...
  #1 (permalink)  
Antiguo 21/03/2015, 15:57
 
Fecha de Ingreso: octubre-2010
Mensajes: 123
Antigüedad: 14 años
Puntos: 10
Pasar Variables o Usar variables Globales

Hola chicos.. de nuevo aqui preguntando. busco en internet pero no busco una solucion CONCRETA asi que les vengo a preguntar.

Actualemnte estoy trabajando en Android Studios con JAVA. pero tengo un pequeño problema. actualmente uso una Extends Class para trabajar aplicaciones en un segundo Hilo

Aqui esta la MainActivity

Código Java:
Ver original
  1. public class MainActivity extends ActionBarActivity {
  2.  
  3.     private class enviar_post extends AsyncTask<String, String, String> {
  4.         @Override
  5.         protected String doInBackground(String... parms) {
  6.             http_request conexion = new http_request();
  7.             conexion.url("http://xxxx/android/login.php");
  8.             conexion.parametro("username", "Prueba 1");
  9.             conexion.parametro("password", "Prueba 2");
  10.             String result = conexion.post();
  11.             return result;
  12.         }
  13.  
  14.         protected void onPostExecute(String parms) {
  15.             startActivity(new Intent(MainActivity.this, ResultadosActivity.class));
  16.             Toast.makeText(MainActivity.this, parms, Toast.LENGTH_SHORT).show();
  17.         }
  18.     }
  19.  
  20.     @Override
  21.     protected void onCreate(Bundle savedInstanceState) {
  22.         super.onCreate(savedInstanceState);
  23.         setContentView(R.layout.activity_main);
  24.         Button boton = (Button)findViewById(R.id.boton);
  25.         boton.setOnClickListener(new View.OnClickListener() {
  26.             @Override
  27.             public void onClick(View v) {
  28.  
  29.                 ProgressDialog dialogo = new ProgressDialog(MainActivity.this);
  30.                 dialogo.setProgressStyle(ProgressDialog.STYLE_SPINNER);
  31.                 dialogo.setMessage("Espere un momento...");
  32.                 dialogo.setCancelable(false);
  33.                 dialogo.show();
  34.  
  35.                 new enviar_post().execute();
  36.             }
  37.         });
  38.     }

Cuando hago CLick en el Bton de prueba ejecuta donde dice "SetOnClickListen"
Y al iniciar Crea un Objeto de ventana de Dialogo. y despues "
New enviar_post.execute
Ejecuta la tarea.

El problema aqui es que una vez la pongo no puedo quitarla ya que desde la Funcion

protected void onPostExecute(String parms) {
startActivity(new Intent(MainActivity.this, ResultadosActivity.class));
Toast.makeText(MainActivity.this, parms, Toast.LENGTH_SHORT).show();
}

No tengo accecible el Objeto

dialogo.hide();

alguien sabe como puedo pasar el Objeto dentro de la funcion o hacer la variable Global cuando se declare?
  #2 (permalink)  
Antiguo 22/03/2015, 02:48
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 3 meses
Puntos: 182
Respuesta: Pasar Variables o Usar variables Globales

Buenas,

Eso es porque creas el dialogo desde la función de callback que maneja el evento del botón:
Código Java:
Ver original
  1. ProgressDialog dialogo = new ProgressDialog(MainActivity.this);

Al crear el dialogo desde ese ámbito (dentro de un método anónimo) luego pierdes la referencia y no tienes ningún modo de controlarlo.

Una forma sencilla de hacerlo es pasar la referencia del dialogo ya sea por constructor o mediante un metodo set. Por ejemplo:

Código Java:
Ver original
  1. private class enviar_post extends AsyncTask<String, String, String> {
  2.     private ProgressDialog dialogo;
  3.         @Override
  4.         protected String doInBackground(String... parms) {
  5.             http_request conexion = new http_request();
  6.             conexion.url("http://xxxx/android/login.php");
  7.             conexion.parametro("username", "Prueba 1");
  8.             conexion.parametro("password", "Prueba 2");
  9.             String result = conexion.post();
  10.             return result;
  11.         }
  12.  
  13.        public enviar_post setProgressDialog(ProgressDialog dialog) {
  14.             this.dialogo = dialog;
  15.             return this;
  16.        }
  17.  
  18.         protected void onPostExecute(String parms) {
  19.             startActivity(new Intent(MainActivity.this, ResultadosActivity.class));
  20.             Toast.makeText(MainActivity.this, parms, Toast.LENGTH_SHORT).show();
  21.             this.dialogo.close();
  22.         }
  23.     }
  24.  
  25. ..............
  26.  
  27.  
  28.   new enviar_post().setProgressDialog(dialogo).execute();


Un saludo
__________________
If to err is human, then programmers are the most human of us

Etiquetas: android, global, sdk, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:50.