Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 04/05/15, 12:03:18
Array

[xs_avatar]
kohario88 kohario88 no está en línea
Miembro del foro
 
Fecha de registro: abr 2015
Mensajes: 79
Tu operador: Movistar

Login en android studio

Buenos días.
Estoy practicando la creación de Log in en android studio.
Mi aplicacion tendría un modo visitante, por así decirlo, y un modo usuario, es decir, si te logeas ves mas opciones. Mi aplicación consta de un activity principal que es un menú con varias opciones y es donde quiero que me detecte si soy usuario o no para mostrar mas opciones. (Siento si soy muy pesado y me excedo en la explicación pero si os transmito al detalle lo que quiero exactamente y mi problema creo que os sera mas fácil ayudarme.
He creado la pestaña login y esta me funciona perfectamente:
1º entro en el main (donde las opciones)
2º selecciono el botón login que me lleva a activity login
3º introduzco datos y doy a iniciar sesión
3.1 Si es erróneo me aparece una activity diciéndome error y me redirecciona al login
3.2 Si es correcto me aparece una activity diciéndome correcto y me crea el activity main pasándome el booleano conectado a true.
4º En el login no se me muestra el botón login sino el botón desconectarse y me aparecen las opcones que quiero mostrar como conectado(por lo que se que conectado = true)

Mi problema viene ahora. Si yo entro en una pestaña de mi menú o de las opciones del main que me redireccionen a otro activity o fragment, al regresar al main conectado =false. No se como guardar de tal manera el resultado de esa variable para que solo sea posible cambiarla desde "cerrar sesión".
Cualquier pregunta o duda de mi problema o mi programa me dicen y les contesto. Muchas gracias de antemano.
Responder Con Cita


  #2  
Viejo 04/05/15, 14:47:37
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
Responder Con Cita
  #3  
Viejo 04/05/15, 15:18:26
Array

[xs_avatar]
kohario88 kohario88 no está en línea
Miembro del foro
 
Fecha de registro: abr 2015
Mensajes: 79
Tu operador: Movistar

oks, ahora lo intento gracias
Responder Con Cita
  #4  
Viejo 04/05/15, 16:39:40
Array

[xs_avatar]
kohario88 kohario88 no está en línea
Miembro del foro
 
Fecha de registro: abr 2015
Mensajes: 79
Tu operador: Movistar

No consigo que funcione

Paso por aquí mi main class y si podéis y no os importa le echáis un vistazo porque sigue sin funcionar (y si, se que es mucho y a saco pero no se me ocurre que mas hacer):

package com.example.kohario.newofersalud;

import android.app.DownloadManager;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.res.Configuration;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBarDrawerToggle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.content.Context;
import android.content.SharedPreferences;
import java.lang.*;
import java.util.List;


public class OferSaludMain extends ActionBarActivity {

// Control de la pila (historial)
private boolean comienzo = true;
private int pila = 0;
private int posActual = 0;
static boolean conectado;


// Navigation drawer (men�) y lista para cargar en el mismo.
private DrawerLayout menuDrawer;
private ListView listaDrawer;

// Extras para el navigation drawer.
private ActionBarDrawerToggle drawerToggle;
// Adaptador de la lista.


/** Metodo inicializador de casi todo lo necesario para la actividad. **
@override
protected void onCreate(Bundle savedInstanceState) {




super.onCreate(savedInstanceState);
setContentView(R.layout.layout_activity_main);









if (savedInstanceState != null) {
this.pila = savedInstanceState.getInt("pila");
this.posActual = savedInstanceState.getInt("posActual");
this.comienzo = savedInstanceState.getBoolean("comienzo");
if(conectado==true){
this.conectado=savedInstanceState.getBoolean("cone xion");
}


}

// tituloAction = tituloDrawer = getTitle();

menuDrawer = (DrawerLayout) findViewById(R.id.drawerLayout);
listaDrawer = (ListView) findViewById(R.id.menuIzquierdo);



// Pongo a cada elemento de la lista el listener necesario para hacerles
// click.
listaDrawer.setOnItemClickListener(new DrawerItemClickListener());

// Creo un adaptador de lista y le paso el contexto y mi lista
// personalizada.

// Llamo al m�todo que me llena la lista.


llenarLista();



// Toggle del drawer (abierto/cerrado)
drawerToggle = new ActionBarDrawerToggle(this, menuDrawer, R.string.drawer_abierto, R.string.drawer_cerrado ) {

// Estado del drawer: cerrado.
public void onDrawerClosed(View view) {
super.onDrawerClosed(view);
// getSupportActionBar().setTitle(tituloAction);
}

// Estado del drawer: abierto.
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
// getSupportActionBar().setTitle(tituloDrawer);
}
};



// Pongo el drawerToggle como listener de menuDrawer.
menuDrawer.setDrawerListener(drawerToggle);

getSupportActionBar().setDisplayHomeAsUpEnabled(tr ue);

if (savedInstanceState == null) {
elementoElegido(0);
comienzo = false;
} else {
elementoElegido(posActual);
}


}



@override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("pila", this.pila);
outState.putInt("posActual", this.posActual);
outState.putBoolean("comienzo", this.comienzo);
outState.putBoolean("conexion",this.conectado);


}

public void openmenu(View v){
menuDrawer.openDrawer(listaDrawer);
}
/** M�todo que llena la lista de opciones. **
public void llenarLista() {
AdaptadorDrawer adaptador = new AdaptadorDrawer(this);

// Creo un Array desde XML con los nombres de cada item.
String opciones[] = getResources().getStringArray(R.array.opcionesMenu );

// Empiezo a popular los items con sus respectivos nombres.
for (int i = 0; i < opciones.length; i++){

adaptador.aditem(opciones[i].toString());
}
listaDrawer.setAdapter(adaptador);



}



/** Evento que ocurre despu�s de que esta actividad sea creada. **
@override

protected void onPostCreate(Bundle savedInstanceState) {

super.onPostCreate(savedInstanceState);
/*
* Sincroniza el estado abierto/cerrado del drawer despu�s de que
* onRestoreInstanceState haya tenido lugar.
*
drawerToggle.syncState();
if(conectado==true){

TextView iniciar;
iniciar=(TextView)findViewById(R.id.xlog);
TextView desconec;
desconec=(TextView)findViewById(R.id.btncerrarsesi on);


iniciar.setVisibility(View.GONE);
desconec.setVisibility(View.VISIBLE);
SharedPreferences preferencias=getSharedPreferences("conexion",Conte xt.MODE_PRIVATE);
SharedPreferences.Editor editor=preferencias.edit();
editor.putBoolean("conexion",conectado);
editor.commit();

}
else{

TextView iniciar;
iniciar=(TextView)findViewById(R.id.xlog);
TextView desconec;
desconec=(TextView)findViewById(R.id.btncerrarsesi on);

iniciar.setVisibility(View.VISIBLE);
desconec.setVisibility(View.GONE);
SharedPreferences preferencias=getSharedPreferences("conexion",Conte xt.MODE_PRIVATE);
SharedPreferences.Editor editor=preferencias.edit();
editor.putBoolean("conexion",conectado);
editor.commit();

}

}

/** Evento de cambio de configuraci�n. **
@override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
drawerToggle.onConfigurationChanged(newConfig);
}

/** Men� de la barra de acci�n. **
@override
public boolean onCreateOptionsMenu(Menu menu) {

// Carga el men� si existe.
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_ofer_salud_main, menu);
return true;

}


/**
* Lo que sucede al pulsar los elementos de la barra de acci�n y una parte
* del navigation drawer (el abrir/cerrar).
**
@override
public boolean onOptionsItemSelected(MenuItem item) {
// Pasa el evento al drawerToggle de la ActionBar si est� presente,
// si devuelve verdadero es que se ha tocado el bot�n del
// navigationDrawer.
if (drawerToggle.onOptionsItemSelected(item)) {
return true;
}
// Otros objetos de la barra de acci�n...

return super.onOptionsItemSelected(item);
}

// Clase interna escuchadora.
private class DrawerItemClickListener implements
ListView.OnItemClickListener {
@override
public void onItemClick(AdapterView padre, View vista, int posicion,
long id) {

if (pila != posicion) {
if (posicion != 5 && posicion != 8 && posicion != 12 && posicion != 13
&& posicion != 14 && posicion != 15) {
elementoElegido(posicion);// Llamada al m�todo que lanza las
// otras actividades de la app.
} else {
menuDrawer.closeDrawer(listaDrawer);// Cierra el men�
// drawer.
switch (posicion) {
case 5:
abrirPuntosDeVenta();
//Toast.makeText(getApplication().getApplicationCont ext(), "Puntos de venta", Toast.LENGTH_SHORT).show();
break;

case 8:
abrirBlog();
break;

case 12:
abrirLlamada();
break;

case 13:
abrirWeb();
break;

case 14:
abrirEmail();
break;

case 15:
abrirFormulariol();
break;
}

}
}

else
menuDrawer.closeDrawer(listaDrawer);// Cierra el drawer.

}
}

/** M�todo que cambia los fragmentos de contenido de la actividad. **
private void elementoElegido(int posicion) {
/*
* Creo un nuevo fragmento y especifico que numero de elemento menu se
* va a mostrar en la pantalla.
*

// Asigno la variable para saber que fragmento esta en lo mas alto de la
// backstack.
pila = posicion;
posActual = posicion;// Guardo la posicion para recuperla en un cambio
// de orientacion.

// Extraigo un array de XML para cambiar el titulo en funcion de la
// seccion.
String titulos[] = getResources().getStringArray(R.array.titulosMenu) ;
if ((posicion != 8 && posicion != 12 && posicion != 13
&& posicion != 14 && posicion != 15))
this.setTitle(titulos[posicion]);

// Cro un fragmento y establezco sus propiedades.
FragmentoContenido fragmento = new FragmentoContenido();
Bundle args = new Bundle();
args.putInt(FragmentoContenido.ARG_NUMERO_ELEMENTO , posicion);
fragmento.setArguments(args);

// Inserta el fragmneto reemplazando uno ya existente
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();

// Pongo aniamciones personalizadas seg�n mis necesidades.
if (!comienzo)
ft.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left);
else
ft.setCustomAnimations(R.anim.abc_slide_in_top,
R.anim.slide_out_left);
// ft.setTransition(ft.TRANSIT_FRAGMENT_FADE);<-Animaci�n por defecto,
// m�s ligera.
ft.replace(R.id.contenedor, fragmento);

ft.commit();

// Reslta el objeto seleccionado, actualiza el t�tulo, y cierra el
// drawer.
listaDrawer.setItemChecked(posicion, true);
// setTitle("T�tulo X");<-Cambio de t�tulo despreciadao, de momento.
menuDrawer.closeDrawer(listaDrawer);
}

/********************* METODO DE NAVEGACION *********************************

@override
public void onBackPressed() {

/*
* Si el usuario no est� en la pantalla de inicio, le envia a ella. Si
* no, se entiende que la navegaci�n ha alcanzado su �ltimo punto y la
* app se cierra.
*
if (pila != 0) {
elementoElegido(0);
String titulos[] = getResources().getStringArray(
R.array.titulosMenu);
this.setTitle(titulos[0]);
} else
finish();
}

/********************* M�TODOS PRIMERA PLANA ******************************
public void filtrarCentros(View vista) {

Intent i = new Intent(getApplicationContext(), FiltroCentros.class);
startActivity(i);
}

public void filtrarEspecialistas(View vista) {

Intent i = new Intent(getApplicationContext(),
FiltroEspecialistas.class);
startActivity(i);
}

/********************* M�TODOS PRIMERA PLANA ******************************

/********************* M�TODOS CONTACTO ******************************



public void login(View view) {
Intent i = new Intent(this, layout_login.class );
startActivity(i);
}

public void abrirPuntosDeVenta(){

Intent i = new Intent(this, MapaOfs.class);

i.putExtra("origen", "puntosDeVenta");

startActivity(i);
}

public void abrirBlog() {
String url;
Intent i;

// Al uri se le pasa la direcci�n url del blog.
url = "http://www.ofersalud.es/blog/";
i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));

startActivity(Intent.createChooser(i, "Abrir página web con:"));
}

public void abrirLlamada() {
Intent i;

// Al uri se le pasa el tel�fono de Ofersalud.
i = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:963286428"));
startActivity(i);
}

public void abrirWeb() {
String url;
Intent i;

// Al uri se le pasa la direcci�n de la web de Ofersalud.
url = "http://www.ofersalud.es/";
i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(Intent.createChooser(i, "Abrir página web con:"));
}

public void abrirEmail() {

final Intent intentEmail = new Intent(
android.content.Intent.ACTION_SEND);

// Tipo de texto.
intentEmail.setType("plain/text");
// Destinatario.
intentEmail.putExtra(android.content.Intent.EXTRA_ EMAIL,
new String[] { "[email protected]" });

// Se le muestra al usuario una lista con sus apps capaces de
// enviar un correo.
startActivity(Intent.createChooser(intentEmail, "Enviar e-mail con:"));
}

public void abrirFormulariol() {

Intent i = new Intent(this, VistaForm.class);
startActivity(i);
}

/******************************* FIN ****************************************

/********************* M�TODOS REDES SOCIALES ******************************

public void irFacebook(View v) {
// v.setBackgroundResource(R.drawable.forma_redondead a);
startActivity(abrirFacebookApp(this));
}

public static Intent abrirFacebookApp(Context context) {

/*
* Este m�todo comprueba si la APP de facebook est� instalada en el
* dispositivio. si lo est�, entonces abre la p�gina de Ofersalud en la
* APP de Facebook, si no, la abre con uno de los navegadores elegido
* por el usuaruio.
*

try {
context.getPackageManager()
.getPackageInfo("com.facebook.katana", 0);
return new Intent(Intent.ACTION_VIEW,
Uri.parse("fb://profile/170200423092462"));
} catch (Exception e) {
return new Intent(Intent.ACTION_VIEW,
Uri.parse("https://www.facebook.com/170200423092462"));
}
}

/****************************** FIN ****************************

/************************* M�TODOS DESCARGAS ******************************
/**
* El contexto se le pasa para averiguar la versi�n del tel�fono y la info
* de download manager. true si la descarga est� disponible.
*
public static boolean descargaDisponible(Context context) {
try {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.GINGERBREAD) {
return false;
}
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setClassName("com.android.providers.downloa ds.ui",
"com.android.providers.downloads.ui.DownloadList") ;
List<ResolveInfo> list = context.getPackageManager()
.queryIntentActivities(intent,
PackageManager.MATCH_DEFAULT_ONLY);
return list.size() > 0;
} catch (Exception e) {
return false;
}
}

public void descargar(View v) {
if (descargaDisponible(getApplicationContext())) {
String url = "";

Toast.makeText(this, "Su descarga comenzará en breve.",
Toast.LENGTH_SHORT).show();

switch (v.getId()) {


case R.id.dd_valencia:
url = "https://ofersalud.es/pdf/valencia.php";
break;

case R.id.dd_alicante:
url = "https://ofersalud.es/pdf/alicante.php";
break;

case R.id.dd_baleares:
url = "https://ofersalud.es/pdf/baleares.php";
break;

case R.id.dd_madrid:
url = "https://ofersalud.es/pdf/madrid.php";
break;

case R.id.dd_murcia:
url = "https://ofersalud.es/pdf/murcia.php";
break;

case R.id.dd_castellon:
url = "https://ofersalud.es/pdf/castellon.php.pdf";
break;
case R.id.dd_cantabria:
url = "https://ofersalud.es/pdf/cantabria.php.pdf";
break;
}

DownloadManager.Request request = new DownloadManager.Request(
Uri.parse(url));
request.setDescription("Libro del cuadro médico de Ofersalud");
request.setTitle("Libro cuadro médico");

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager. Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
}
request.setDestinationInExternalPublicDir(
Environment.DIRECTORY_DOWNLOADS, v.getTag().toString()
+ "_cuadro_médico.pdf");

// Obtener servicio de descarga y poner archivo a la cola.
DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
manager.enqueue(request);
}
}
static void conectando(boolean c){

conectado=c;



}

public void desconectar(View v){

conectado=false;
SharedPreferences preferencias=getSharedPreferences("datos",Context. MODE_PRIVATE);
SharedPreferences.Editor editor=preferencias.edit();
editor.putBoolean("conexion",conectado);
editor.commit();
finish();
}




//metodo que abre el boton tarifas si has iniciado sesion y que te redirecciona si no
public void mostrartarifas(View view) {

if(conectado==false){

noeresusuario(view);
}
else{
eresusuario(view);
}
}
public void eresusuario(View view) {
Intent i = new Intent(this, youarenotuser.class );
startActivity(i);
}
public void noeresusuario(View view) {
Intent i = new Intent(this, youarenotuser.class );
startActivity(i);
}
}

/******************************* FIN ****************************************/
Responder Con Cita
  #5  
Viejo 06/05/15, 09:16:39
Array

[xs_avatar]
rafaxplayer rafaxplayer no está en línea
Miembro del foro
 
Fecha de registro: jun 2013
Localización: en la barcelona media
Mensajes: 224
Modelo de smartphone: LG-E610
Tu operador: Orange
Revisar toda esa clase es un poco tedioso y aun mas cuando la escribe otro , tendrías que mirar que errores te da el logcat o mostrarlo aqui y ir arreglado el código.
Responder Con Cita
  #6  
Viejo 08/05/15, 10:30:05
Array

[xs_avatar]
kohario88 kohario88 no está en línea
Miembro del foro
 
Fecha de registro: abr 2015
Mensajes: 79
Tu operador: Movistar

Gracias. Te he hecho caso y he revisado todo encontrandome con algo extraño. Estoy pasando entre activitys un boolean conectado y con saveinstance se guarda y toso. Según ese booleano, un boton log in se hace visible y otro boton, cerrar sesion, invisible o viceversa. es curioso que el booleano se me guarda y la primera vez si que se me cambia la visibilidad de los botones pero cuando doy a otro menu y vuelvo, el boton login es visible y el otro invisible. Es raro porque a pesar de ello tengo marcadores que me demustran que la variable booleana conectado esta en true.(es decir, deberia cambiarme la visibilidad.
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 19:18:33 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /