Foros del Web » Programando para Internet » Android »

como lanzar una actividad desde el boton de un AlertDialog personalizado

Estas en el tema de como lanzar una actividad desde el boton de un AlertDialog personalizado en el foro de Android en Foros del Web. Buen dia, tengo una duda como puedo iniciar una actividad desde un boton de un AlertDialog, lo que realizo es que abro un AlertDialog para ...
  #1 (permalink)  
Antiguo 26/05/2011, 15:48
 
Fecha de Ingreso: noviembre-2008
Mensajes: 49
Antigüedad: 15 años, 4 meses
Puntos: 4
Pregunta como lanzar una actividad desde el boton de un AlertDialog personalizado

Buen dia, tengo una duda como puedo iniciar una actividad desde un boton de un AlertDialog, lo que realizo es que abro un AlertDialog para inicio de sesion si el usuario es correcto, al darle click quiero q inicie la actividad siguiente, a continuacion dejo el codigo del evento de OnClick del boton del AlertDialog personalizado:

Código:
public void onClick(DialogInterface dialog, int which) {
		// TODO Auto-generated method stub
		if(which==DialogInterface.BUTTON1)
		{
			getValidacionAcceso();
		}
		
	}
	
	public void getValidacionAcceso(){
		cnx=new ManejadorBD(tx, "passwordsBD", 1);
		bd=cnx.controladorWriteBD();
		Usuario user = new Usuario();
		EditText usuario=(EditText)vista.findViewById(R.id.user);
		EditText password=(EditText) vista.findViewById(R.id.psw);
		user.setUsuario(usuario.getText().toString());
		user.setPassword(password.getText().toString());
		Validacion validar = new Validacion();
		if (validar.validarUsuario(user.getUsuario())
				&& validar.validarPassword(user.getPassword())) {											
				if (cnx.verificarUsuario()) {
					Alerts alerta=new Alerts();
					alerta.showAlert("Registrarse", "Debe registrarse para activar la aplicacion  ", tx);
					bd.close();
				} else {
					Cursor c=cnx.consultar("SELECT * FROM usuarios", null);
					if (c.moveToFirst()) {
						
						String usuarioBD = null;
						String passwordBD = null;
						do {
							usuarioBD = c.getString(4);
							passwordBD = c.getString(5);
						} while (c.moveToNext());
						if(validar.validarUsuarioBD(usuarioBD, user.getUsuario()) && validar.validarPasswordBD(passwordBD, user.getPassword()))
						{
							Intent envio=new Intent(tx,Principal.class);
							Bundle datos=new Bundle();
							datos.putString("usuario", usuarioBD);
							datos.putString("password", passwordBD);
							envio.putExtras(datos);
							startActivity(envio);
						}
						else
						{
							Alerts alerta=new Alerts();
							alerta.showAlert("Datos Incorrectos", "El nombre de usuario o contraseña estan incorrectos", tx);
							bd.close();
						}
					} else {
						Alerts alerta=new Alerts();
						alerta.showAlert("Error de la Aplicación", "Ha ocurrido un error dentro de la Aplicacion", tx);
						bd.close();
					}
				}					
		} else {
			Alerts alerta=new Alerts();
			alerta.showAlert("Datos Inválidos", "El nombre de usuario o contraseña son inválidos", tx);
		}
	}
  #2 (permalink)  
Antiguo 27/05/2011, 14:06
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: como lanzar una actividad desde el boton de un AlertDialog personalizado

Y estas seguro que pasa la validación del if en algún momento ?
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 27/05/2011, 16:08
 
Fecha de Ingreso: noviembre-2008
Mensajes: 49
Antigüedad: 15 años, 4 meses
Puntos: 4
Respuesta: como lanzar una actividad desde el boton de un AlertDialog personalizado

Cita:
Iniciado por masterpuppet Ver Mensaje
Y estas seguro que pasa la validación del if en algún momento ?
Cita:
sip asi es es ya verifique ese dato y si pasa despues del if donde verifico los datos del usuario en la base datos, y no doy en donde esta el error, me marca un nullpointerexception pero cheque los datos y ninguno viene nulo
  #4 (permalink)  
Antiguo 27/05/2011, 18:23
 
Fecha de Ingreso: octubre-2009
Mensajes: 245
Antigüedad: 14 años, 6 meses
Puntos: 17
Información Respuesta: como lanzar una actividad desde el boton de un AlertDialog personalizado

Código java:
Ver original
  1. Cursor c=cnx.consultar("SELECT * FROM usuarios", null);
  2.                     if (c.moveToFirst()) {
  3.                        
  4.                         String usuarioBD = null;
  5.                         String passwordBD = null;
  6.                         do {
  7.                             usuarioBD = c.getString(4);
  8.                             passwordBD = c.getString(5);
  9.                         } while (c.moveToNext());
  10.                         if(validar.validarUsuarioBD(usuarioBD, user.getUsuario()) && validar.validarPasswordBD(passwordBD, user.getPassword()))
  11.                         {
  12.                             Intent envio=new Intent(tx,Principal.class);
  13.                             Bundle datos=new Bundle();
  14.                             datos.putString("usuario", usuarioBD);
  15.                             datos.putString("password", passwordBD);
  16.                             envio.putExtras(datos);
  17.                             startActivity(envio);
  18.                         }

Primero revisa que tu clase devuelva un curso que puede ser ese el problema, otro detalle es que es posible que tu código no funcione como esperas la consulta que haces con rawQuery no tiene condición por lo cual la consulta devuelve todos tus registro y al final del do-while usuarioBD y passwordBD tiene el valor del ultimo registro de tu tabla.
tu consulta podria de ser algo así.
Código Java:
Ver original
  1. Cursor c=cnx.consultar("SELECT * FROM usuarios where usuario= ? and pass = ?", new String[]={user.getUsuario,user().getPassword()});
  2. if(c.getCount() != 0){
  3.      // existe el usuario ejecutas el intent
  4. }else{
  5.   // notificas al usuario
  6. }
__________________
Saludos.

Última edición por JaimeSavines; 28/05/2011 a las 00:01
  #5 (permalink)  
Antiguo 30/05/2011, 10:23
 
Fecha de Ingreso: noviembre-2008
Mensajes: 49
Antigüedad: 15 años, 4 meses
Puntos: 4
Respuesta: como lanzar una actividad desde el boton de un AlertDialog personalizado

Cita:
Iniciado por JaimeSavines Ver Mensaje
Código java:
Ver original
  1. Cursor c=cnx.consultar("SELECT * FROM usuarios", null);
  2.                     if (c.moveToFirst()) {
  3.                        
  4.                         String usuarioBD = null;
  5.                         String passwordBD = null;
  6.                         do {
  7.                             usuarioBD = c.getString(4);
  8.                             passwordBD = c.getString(5);
  9.                         } while (c.moveToNext());
  10.                         if(validar.validarUsuarioBD(usuarioBD, user.getUsuario()) && validar.validarPasswordBD(passwordBD, user.getPassword()))
  11.                         {
  12.                             Intent envio=new Intent(tx,Principal.class);
  13.                             Bundle datos=new Bundle();
  14.                             datos.putString("usuario", usuarioBD);
  15.                             datos.putString("password", passwordBD);
  16.                             envio.putExtras(datos);
  17.                             startActivity(envio);
  18.                         }

Primero revisa que tu clase devuelva un curso que puede ser ese el problema, otro detalle es que es posible que tu código no funcione como esperas la consulta que haces con rawQuery no tiene condición por lo cual la consulta devuelve todos tus registro y al final del do-while usuarioBD y passwordBD tiene el valor del ultimo registro de tu tabla.
tu consulta podria de ser algo así.
Código Java:
Ver original
  1. Cursor c=cnx.consultar("SELECT * FROM usuarios where usuario= ? and pass = ?", new String[]={user.getUsuario,user().getPassword()});
  2. if(c.getCount() != 0){
  3.      // existe el usuario ejecutas el intent
  4. }else{
  5.   // notificas al usuario
  6. }

muchas gracias por tu respuesta y si valido esa parte, de hecho despues de validar el usuario y la contraseña con los datos de la base de datos muestro un alert con las variables donde guardo los datos de la base de datos y me muestra bien la informacion, el detalle es q marca NullPointerExcepcion al momento de lanzar la actividad y no doy cual sea el problema
  #6 (permalink)  
Antiguo 30/05/2011, 10:58
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: como lanzar una actividad desde el boton de un AlertDialog personalizado

Donde y cuando determinas el contexto(la variable tx) ?
__________________
http://es.phptherightway.com/
thats us riders :)
  #7 (permalink)  
Antiguo 30/05/2011, 11:05
 
Fecha de Ingreso: noviembre-2008
Mensajes: 49
Antigüedad: 15 años, 4 meses
Puntos: 4
Respuesta: como lanzar una actividad desde el boton de un AlertDialog personalizado

Cita:
Iniciado por masterpuppet Ver Mensaje
Donde y cuando determinas el contexto(la variable tx) ?
aqui te dejo la clase donde intento llamar la actividad, es una clase especial para cuando hacen click en el boton del dialogo:

Código:
package usuario;

import Password.Principal.Principal;
import Password.Principal.R;
import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

public class EventosSesion extends Activity implements android.content.DialogInterface.OnClickListener {

	public ManejadorBD cnx=null;
	public SQLiteDatabase bd=null;
	public View vista=null;
	public Context tx=null;
	
	private Bundle datos=null;
	
	
	public EventosSesion(View pantalla,Context ctx){
		this.vista=pantalla;
		this.tx=ctx;
	}
	@Override
	public void onClick(DialogInterface dialog, int which) {
		// TODO Auto-generated method stub
		if(which==DialogInterface.BUTTON1)
		{
			getValidacionAcceso();
		}
		
	}
	
	public void getValidacionAcceso(){
		cnx=new ManejadorBD(this.tx, "passwordsBD", 1,'r');
		Usuario user = new Usuario();
		final EditText usuario=(EditText)vista.findViewById(R.id.user);
		final EditText password=(EditText) vista.findViewById(R.id.psw);	
		user.setUsuario(usuario.getText().toString());
		user.setPassword(password.getText().toString());
		Validacion validar = new Validacion();
		if (validar.validarUsuario(user.getUsuario())
				&& validar.validarPassword(user.getPassword())) {											
				if (cnx.verificarUsuario()) {
					Alerts alerta=new Alerts();
					alerta.showAlert("Registrarse", "Debe registrarse para activar la aplicacion  ", this.tx);
				} else {
					String[] args={"jaivetor","123456"};
					Cursor c=cnx.consultar("SELECT * FROM usuarios WHERE nombreUsuario=? and contrasenia=?",args);
					if(c.getCount()==0){
						Alerts alerta=new Alerts();
						alerta.showAlert("Error en la base", "SE HA PRODUCIDO UN ERROR GRAVE", this.tx);
					}
					if (c.moveToFirst()) {						
						String usuarioBD =null;
						String passwordBD = null;						
						do
						{
								usuarioBD =c.getString(4);
								passwordBD = c.getString(5);
													
						}while(c.moveToNext());
						if(validar.validarUsuarioBD(usuarioBD, user.getUsuario()) && validar.validarPasswordBD(passwordBD, user.getPassword()))
						{							
							
							Intent envio=new Intent(this.tx,Principal.class);
							this.datos=new Bundle();
							this.datos.putString("usuario", usuarioBD);
							this.datos.putString("password", passwordBD);
							envio.putExtras(this.datos);
							setResult(RESULT_OK, envio);
							startActivity(envio);
							finish();

							/*Alerts alerta=new Alerts();
							alerta.showAlert("Acceso permitido", "El usuario tiene acceso:"+usuarioBD+"y su contra:"+passwordBD, this.tx);*/
						}
						else
						{
							Alerts alerta=new Alerts();
							alerta.showAlert("Datos Incorrectos", "El nombre de usuario o contraseña estan incorrectos", this.tx);
						}
					} else {
						Alerts alerta=new Alerts();
						alerta.showAlert("Error de la Aplicación", "Ha ocurrido un error dentro de la Aplicacion", this.tx);
					}
				}					
		} else {
			Alerts alerta=new Alerts();
			alerta.showAlert("Datos Inválidos", "El nombre de usuario o contraseña son inválidos", this.tx);
		}
	}
}
  #8 (permalink)  
Antiguo 30/05/2011, 15:01
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: como lanzar una actividad desde el boton de un AlertDialog personalizado

Claro pero es lo mismo, donde instancias EventosSesion y que contexto que le estas pasando ?, si comentas la comprobación y dejas el startActivity te da problemas ?
__________________
http://es.phptherightway.com/
thats us riders :)
  #9 (permalink)  
Antiguo 30/05/2011, 15:05
 
Fecha de Ingreso: noviembre-2008
Mensajes: 49
Antigüedad: 15 años, 4 meses
Puntos: 4
Respuesta: como lanzar una actividad desde el boton de un AlertDialog personalizado

Cita:
Iniciado por masterpuppet Ver Mensaje
Claro pero es lo mismo, donde instancias EventosSesion y que contexto que le estas pasando ?, si comentas la comprobación y dejas el startActivity te da problemas ?

Ah ps le paso la class de la actividad donde muestro el dialogo y la clase de la actividad q quiero ejecutar, el contexto lo recibo como parametro y ps solo en el constructor lo asigno, y si dejo el startactivity si me da problemas y me marca NullPointerException
  #10 (permalink)  
Antiguo 30/05/2011, 15:47
 
Fecha de Ingreso: noviembre-2008
Mensajes: 49
Antigüedad: 15 años, 4 meses
Puntos: 4
Respuesta: como lanzar una actividad desde el boton de un AlertDialog personalizado

Cita:
Iniciado por tazmaniator Ver Mensaje
Ah ps le paso la class de la actividad donde muestro el dialogo y la clase de la actividad q quiero ejecutar, el contexto lo recibo como parametro y ps solo en el constructor lo asigno, y si dejo el startactivity si me da problemas y me marca NullPointerException
te dejo las clases

iniciarsesion

Código:
package usuario;

import Password.Principal.R;
import android.app.Dialog;
import android.content.Context;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import usuario.EventosSesion;

public class IniciarSesion {

	public IniciarSesion() {

	}

	public void ShowIniciarSesion(Context ctx) {		
		Dialog sesion=new Dialog(ctx);
		sesion.setContentView(R.layout.sesion);
		sesion.setTitle("Iniciar Sesion");
		
		Button iniciar=(Button) sesion.findViewById(R.id.iniciar);
		final EditText user=(EditText) sesion.findViewById(R.id.user);
		final EditText psw=(EditText) sesion.findViewById(R.id.psw);
		
		user.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				user.setText("");
			}
		});
		
		psw.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				psw.setText("");
			}
		});
		EventosSesion evento=new EventosSesion(user,psw,ctx);
		iniciar.setOnClickListener(evento);
		
		sesion.show();
		
	}
}
acceso

Código:
package Password.Principal;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import usuario.IniciarSesion;
import usuario.ManejadorBD;

public class Acceso extends Activity {
	
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		
		
		final ManejadorBD cnx=new ManejadorBD(Acceso.this, "passwordsBD", 1,'r');
		
		if(cnx.verificarUsuario())
		{
		  Intent envio = new Intent(Acceso.this, Registro.class);
		  setResult(RESULT_OK);
		  startActivity(envio);
		  cnx.CerrarBD();
		  finish();				  
		}else{
			IniciarSesion sesion=new IniciarSesion();
			sesion.ShowIniciarSesion(Acceso.this);
		}

		
	}
}
  #11 (permalink)  
Antiguo 30/05/2011, 15:58
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: como lanzar una actividad desde el boton de un AlertDialog personalizado

Voy a ver si lo puedo testar, aunque no coincide el constructor de EventosSesion, lo tienes así o es un typo ?

Código Java:
Ver original
  1. EventosSesion evento = new EventosSesion(user, psw, ctx);

no debería ser ? :

Código Java:
Ver original
  1. EventosSesion(View pantalla, Context ctx)
__________________
http://es.phptherightway.com/
thats us riders :)
  #12 (permalink)  
Antiguo 30/05/2011, 16:04
 
Fecha de Ingreso: noviembre-2008
Mensajes: 49
Antigüedad: 15 años, 4 meses
Puntos: 4
Respuesta: como lanzar una actividad desde el boton de un AlertDialog personalizado

Es q hice un cambio en mi clase ahora estoy utilizando un Dialog en vez de un AlertDialog pensando q eso me provocaba el error, esta clase con las dos anteriores son las q uso para iniciar la sesion, ps ojala lo puedas testear ya busque y no encuentro la manera de como solucionarlo

Código Java:
Ver original
  1. package usuario;
  2.  
  3. import Password.Principal.Principal;
  4. import android.app.Activity;
  5. import android.content.Context;
  6. import android.content.Intent;
  7. import android.database.Cursor;
  8. import android.database.sqlite.SQLiteDatabase;
  9. import android.os.Bundle;
  10. import android.view.View;
  11. import android.widget.EditText;
  12.  
  13. public class EventosSesion extends Activity  implements android.view.View.OnClickListener{
  14.  
  15.     public ManejadorBD cnx=null;
  16.     public SQLiteDatabase bd=null;
  17.     public Context tx=null;
  18.     public EditText usuario;
  19.     public EditText password;
  20.     public Bundle datos=null;
  21.    
  22.    
  23.     public EventosSesion(EditText user,EditText psw,Context ctx){
  24.          usuario=user;
  25.          password=psw;
  26.         this.tx=ctx;
  27.     }
  28.     @Override
  29.     public void onClick(View v) {
  30.         // TODO Auto-generated method stub
  31.             getValidacionAcceso();
  32.     }
  33.    
  34.     public void getValidacionAcceso(){
  35.         cnx=new ManejadorBD(this.tx, "passwordsBD", 1,'r');
  36.         Usuario user = new Usuario();      
  37.         user.setUsuario(this.usuario.getText().toString());
  38.         user.setPassword(this.password.getText().toString());
  39.         Validacion validar = new Validacion();
  40.         if (validar.validarUsuario(user.getUsuario())
  41.                 && validar.validarPassword(user.getPassword())) {                                          
  42.                 if (cnx.verificarUsuario()) {
  43.                     Alerts alerta=new Alerts();
  44.                     alerta.showAlert("Registrarse", "Debe registrarse para activar la aplicacion  ", this.tx);
  45.                 } else {
  46.                     String[] args={user.getUsuario(),user.getPassword()};
  47.                     Cursor c=cnx.consultar("SELECT * FROM usuarios WHERE nombreUsuario=? and contrasenia=?",args);
  48.                     if(c.getCount()==0){
  49.                         Alerts alerta=new Alerts();
  50.                         alerta.showAlert("Error en la base", "SE HA PRODUCIDO UN ERROR GRAVE", this.tx);
  51.                     }
  52.                     if (c.moveToFirst()) {                     
  53.                         String usuarioBD =null;
  54.                         String passwordBD = null;                      
  55.                         do
  56.                         {
  57.                                 usuarioBD =c.getString(4);
  58.                                 passwordBD = c.getString(5);
  59.                                                    
  60.                         }while(c.moveToNext());
  61.                         if(validar.validarUsuarioBD(usuarioBD, user.getUsuario()) && validar.validarPasswordBD(passwordBD, user.getPassword()))
  62.                         {                          
  63.                            
  64.                             Intent envio=new Intent(this.tx,Principal.class);
  65.                             this.datos=new Bundle();
  66.                             this.datos.putString("usuario", usuarioBD);
  67.                             this.datos.putString("password", passwordBD);
  68.                             envio.putExtras(this.datos);
  69.                             setResult(RESULT_OK, envio);
  70.                             startActivity(envio);
  71.                             finish();
  72.  
  73.                             /*Alerts alerta=new Alerts();
  74.                             alerta.showAlert("Acceso permitido", "El usuario tiene acceso:"+usuarioBD+"y su contra:"+passwordBD, this.tx);*/
  75.                         }
  76.                         else
  77.                         {
  78.                             Alerts alerta=new Alerts();
  79.                             alerta.showAlert("Datos Incorrectos", "El nombre de usuario o contraseña estan incorrectos", this.tx);
  80.                         }
  81.                     } else {
  82.                         Alerts alerta=new Alerts();
  83.                         alerta.showAlert("Error de la Aplicación", "Ha ocurrido un error dentro de la Aplicacion", this.tx);
  84.                     }
  85.                 }                  
  86.         } else {
  87.             Alerts alerta=new Alerts();
  88.             alerta.showAlert("Datos Inválidos", "El nombre de usuario o contraseña son inválidos", this.tx);
  89.         }
  90.     }
  91. }

Etiquetas: lanzar, personalizado, botones
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 08:30.