Traer informacion de una activity a otra

publicado por: Anonymous

Mi proyecto consiste en una agenda estudiantil la cual puede tener distintos usuarios por dispositivo, quiero es tomar la id de quien entra (en el login) y pasarla a mi segunda activity (navigation drawer) y con esto poder sustituir el titulo que me genera el android studio en el menu por el nombre del usuario (buscando la id en la base de datos, id suministrada anteriormente en el ingreso del login), se que se puede hacer un .putextra pero no se como cargarlo de la base de datos…

SQLite.java mi base de datos…

    public class SQLite extends SQLiteOpenHelper {

    //constructor.......
    public SQLite(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }



    //aqui se crea la tabla...
    @Override
    public void onCreate(SQLiteDatabase db) {

        db.execSQL("create table usuarios (id integer primary key autoincrement, " +
                "nombre text, clave text)");

        db.execSQL("create table profesores (id integer primary key autoincrement, " +
                "nombre text, detalle text)");


        db.execSQL("create table materias (id integer primary key autoincrement, " +
                "nombre text, id_profesor integer, id_periodo integer, detalle text, " +
                "foreign key(id_profesor) references profesores (id)," +
                "foreign key(id_periodo) references periodo(id))");

        db.execSQL("create table periodo (id integer primary key autoincrement, " +
                "nombre text, id_usuario integer, fechainicio integer, fechacierre integer," +
                "foreign key(id_usuario) references usuarios(id))");

        db.execSQL("create table caracteristicas (id integer primary key autoincrement, " +
                "nombre text)");

        db.execSQL("create table asignacion (id integer primary key autoincrement, " +
                "detalle text, id_materia integer, fecha integer, id_periodo integer, id_tarea integer," +
                "foreign key(id_materia) references materias(id)," +
                "foreign key(id_periodo) references periodo(id)," +
                "foreign key(id_tarea) references tarea(id))");

        db.execSQL("create table tarea (id integer primary key autoincrement, " +
                "nombre text)");

        db.execSQL("create table caracteristica_profesor (id_profesor integer, id_caracteristica integer," +
                "foreign key(id_profesor) references profesores(id)," +
                "foreign key(id_caracteristica) references caracteristicas(id))");


        db.execSQL("insert into usuarios values('0','admin','admin')");


    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        db.execSQL("create table usuarios (id integer primary key autoincrement, " +
                "nombre text, clave text)");

        db.execSQL("create table profesores (id integer primary key autoincrement, " +
                "nombre text, detalle text)");


        db.execSQL("create table materias (id integer primary key autoincrement, " +
                "nombre text, id_profesor integer, id_periodo integer, detalle text, " +
                "foreign key(id_profesor) references profesores (id)," +
                "foreign key(id_periodo) references periodo(id))");

        db.execSQL("create table periodo (id integer primary key autoincrement, " +
                "nombre text, id_usuario integer, fechainicio integer, fechacierre integer," +
                "foreign key(id_usuario) references usuarios(id))");

        db.execSQL("create table caracteristicas (id integer primary key autoincrement, " +
                "nombre text)");

        db.execSQL("create table asignacion (id integer primary key autoincrement, " +
                "detalle text, id_materia integer, fecha integer, id_periodo integer, id_tarea integer," +
                "foreign key(id_materia) references materias(id)," +
                "foreign key(id_periodo) references periodo(id)," +
                "foreign key(id_tarea) references tarea(id))");

        db.execSQL("create table tarea (id integer primary key autoincrement, " +
                "nombre text)");

        db.execSQL("create table caracteristica_profesor (id_profesor integer, id_caracteristica integer," +
                "foreign key(id_profesor) references profesores(id)," +
                "foreign key(id_caracteristica) references caracteristicas(id))");


        db.execSQL("insert into usuarios values('0','admin','admin')");
    }
}

MainActivity.java actividad la cual tiene el login

    package company.viral.organizadorjec.ActivitysPrincipales;

import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

import company.viral.organizadorjec.R;

//aqui empieza...
public class MainActivity extends AppCompatActivity {

    //creamos variables EditText para capturar los datos
    private EditText aetid,aetpass;
    private Cursor fila;


    //en este metodo SIEMPRE se dibuja la app correspondiente
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    //antes de dibujar definimos las variables y a quienes pertecen en el layout

        aetid = (EditText) findViewById(R.id.etid);
        aetpass = (EditText) findViewById(R.id.etpass);

    }

    //creamos los metodos con los que reaccionan los btn (onClick)
    /*metodo para entrar y buscar (en construccion.... explorando metodos)*/

    public void onClickAcepta (View view) {
        String auxn = aetid.getText().toString();
        String auxp = aetpass.getText().toString();

        SQLite admin = new SQLite(this,"administracion", null, 1);
        SQLiteDatabase bd = admin.getWritableDatabase();

        //modifique el llamado de la base de datos agregando el id
        fila=bd.rawQuery("select nombre, clave, id from usuarios where nombre='"+auxn+"'and clave='"+auxp+"'",null);



        if(fila.moveToFirst()==true){

            //capturamos los valores del cursos y lo almacenamos en variable
            String usua=fila.getString(0);
            String pass=fila.getString(1);
            //y almacenandolo en esta variable
            int id=fila.getInt(2);

            //preguntamos si los datos ingresados son iguales
            if (auxn.equals(usua)&&auxp.equals(pass)){

                //si son iguales entonces vamos a otra ventana
                //Menu es una nueva actividad empty
                Intent ven=new Intent(this,MenuCentral.class);

                //agregue el put extra aqui...----
                ven.putExtra("identificador",id);
                //--------------------------------
                startActivity(ven);

                //limpiamos las las cajas de texto
                aetid.setText("");
                aetpass.setText("");

                finish();

            }

        }else {

            Toast.makeText(getApplicationContext(), "Usuario o contraseña erroneo", Toast.LENGTH_LONG).show();
        }

        bd.close();

    }

    //metodo para entrar a la actividad de registro

    public void onClickRegistro(View view){
        Intent i = new Intent(this,Registro.class);
        startActivity(i);

        finish();
    }

    @Override
    public void onBackPressed() {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setMessage("¿Desea Salir de la Aplicación?");
        builder.setTitle("Alerta!");
        builder.setPositiveButton("SI", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                finish();
            }
        });
        builder.setNegativeButton("NO", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.cancel();
            }
        });

        AlertDialog dialog=builder.create();
        dialog.show();
    }
}

//como podrán notar la actividad captura y realiza la validación del usuario, lo que quiero es que tome el id del usuario en cuestión y pueda llevarlo a la siguiente actividad

MenuCentral.java actividad que contiene el menu central donde se desarrolla mi app

    package company.viral.organizadorjec.ActivitysPrincipales;

import android.content.DialogInterface;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.FragmentManager;
import android.support.v7.app.AlertDialog;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.support.design.widget.NavigationView;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.RelativeLayout;
import android.widget.TextView;

import company.viral.organizadorjec.FragmentMenu.CaracteristicasF;
import company.viral.organizadorjec.FragmentMenu.PeriodosF;
import company.viral.organizadorjec.FracmentPopUp.ConfiguracionActividadF;
import company.viral.organizadorjec.FracmentPopUp.ConfiguracionMateriaF;
import company.viral.organizadorjec.FracmentPopUp.ConfiguracionPeriodoF;
import company.viral.organizadorjec.FracmentPopUp.ConfiguracionProfesorF;
import company.viral.organizadorjec.FragmentMenu.InicioF;
import company.viral.organizadorjec.FragmentMenu.MateriaF;
import company.viral.organizadorjec.FragmentMenu.PerfilF;
import company.viral.organizadorjec.FragmentMenu.ProfesoresF;
import company.viral.organizadorjec.R;

public class MenuCentral extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener {

    private PopupWindow popupadicion;
    private DrawerLayout posicionpopup;
    //agregue el cursor----------
    private Cursor nombreid;
    //--------------------------
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_menu_central);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        //codigo modificado-----------------------------------------------------------------
        //teoria implementada pero no corre :S

        Bundle bundle=getIntent().getExtras();
        int identificar = bundle.getInt("identificador");

        SQLite admin = new SQLite(this,"administracion",null,1);
        SQLiteDatabase bd = admin.getWritableDatabase();

        nombreid=bd.rawQuery("select nombre from usuarios where id='"+identificar+"'",null);
        TextView correo = (TextView) findViewById(R.id.textViewcorreo);


        if (nombreid.moveToFirst()==true){
            String usuarioid=nombreid.getString(0);
            correo.setText(usuarioid);
        }
        //---------------------------------------------------------------------------------

        posicionpopup = (DrawerLayout) findViewById(R.id.drawer_layout);



        //colocamos el fragment con que inicia el menu

        FragmentManager fragmentManager = getSupportFragmentManager();
        fragmentManager.beginTransaction().replace(R.id.contenedor,new InicioF()).commit();


        //este es el apartado para el botonsito flotante

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {

            //metodo de escucha para el popup
            @Override
            public void onClick(View view) {

               if(popupadicion!=null){
                    popupadicion.dismiss();
               }



                //implementamos el popup
                LayoutInflater inflater = (LayoutInflater)getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);
                final View vistaadicion = inflater.inflate(R.layout.activity_pop_adicion,null);

                popupadicion = new PopupWindow(
                        vistaadicion, RelativeLayout.LayoutParams.WRAP_CONTENT,
                        RelativeLayout.LayoutParams.WRAP_CONTENT
                );


                //luego de clicear y abrir el popup le decimos...
                //si das al profe ve a profe
                LinearLayout btnprofe = (LinearLayout) vistaadicion.findViewById(R.id.btnagregarprofesor);
                btnprofe.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {

                        FragmentManager fragmentManager = getSupportFragmentManager();
                        fragmentManager.beginTransaction().replace(R.id.contenedor,new ConfiguracionProfesorF()).commit();
                        popupadicion.dismiss();

                    }
                });
                //si le das actividad ve actividad
                LinearLayout btnactividad = (LinearLayout) vistaadicion.findViewById(R.id.btnagregaractividad);
                btnactividad.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {

                        FragmentManager fragmentManager = getSupportFragmentManager();
                        fragmentManager.beginTransaction().replace(R.id.contenedor,new ConfiguracionActividadF()).commit();
                        popupadicion.dismiss();

                    }
                });
                //si le das a materias ve a materias
                LinearLayout btnmaterias = (LinearLayout) vistaadicion.findViewById(R.id.btnagregarmateria);
                btnmaterias.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {

                        FragmentManager fragmentManager = getSupportFragmentManager();
                        fragmentManager.beginTransaction().replace(R.id.contenedor,new ConfiguracionMateriaF()).commit();
                        popupadicion.dismiss();

                    }
                });
                //si le das a periodo ve a periodo
                LinearLayout btnperiodo = (LinearLayout) vistaadicion.findViewById(R.id.btnagregarperiodo);
                btnperiodo.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {

                        FragmentManager fragmentManager = getSupportFragmentManager();
                        fragmentManager.beginTransaction().replace(R.id.contenedor,new ConfiguracionPeriodoF()).commit();
                        popupadicion.dismiss();

                    }
                });
                //luego le decimos que cierre el popup con el boton

                Button cerrarboton = (Button) vistaadicion.findViewById(R.id.btnpopupcerrar);
                cerrarboton.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        popupadicion.dismiss();
                    }
                });


                //hubicamos donde queremos el popup
                popupadicion.showAtLocation(posicionpopup, Gravity.CENTER,0,0 );
            }
        });

        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.setDrawerListener(toggle);
        toggle.syncState();

        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);
    }

    @Override
    public void onBackPressed() {
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
        } else {
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setMessage("¿Desea Salir de la Aplicación?");
            builder.setTitle("Alerta!");
            builder.setPositiveButton("SI", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    finish();
                }
            });
            builder.setNegativeButton("NO", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.cancel();
                }
            });

            AlertDialog dialog=builder.create();
            dialog.show();
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_central, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    @SuppressWarnings("StatementWithEmptyBody")
    @Override
    public boolean onNavigationItemSelected(MenuItem item) {
        // Handle navigation view item clicks here.
        int id = item.getItemId();

        FragmentManager fragmentManager = getSupportFragmentManager();

        if (id == R.id.nav_camera) {
            fragmentManager.beginTransaction().replace(R.id.contenedor,new InicioF()).commit();

        } else if (id == R.id.nav_gallery) {
            fragmentManager.beginTransaction().replace(R.id.contenedor,new ProfesoresF()).commit();

        } else if (id == R.id.nav_slideshow) {
            fragmentManager.beginTransaction().replace(R.id.contenedor,new PeriodosF()).commit();

        } else if (id == R.id.nav_manage) {
            fragmentManager.beginTransaction().replace(R.id.contenedor,new CaracteristicasF()).commit();

        } else if (id == R.id.nav_share) {
            fragmentManager.beginTransaction().replace(R.id.contenedor,new PerfilF()).commit();

        } else if (id == R.id.nav_send) {


        } else if (id == R.id.nav_materia){
            fragmentManager.beginTransaction().replace(R.id.contenedor,new MateriaF()).commit();
        }

        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
        return true;
    }


}

solución

Si la validación te resulta y solamente quieres pasar el id del usuario con el Intentque llama la proxima actividad, puedes modificar la solicitud como:

    fila=bd.rawQuery("select nombre, clave, id from usuarios where nombre='"+auxn+"'and clave='"+auxp+"'",null);

así el tercer valor sería el id de tu usuario y lo puedes agregar al Intentcon

intent.putExtra("id", fila.getInt(2));

y en la nueva actividad leerlo con getIntExtra("id")

Ahora el asunto de la cabecera dinamica. cambia

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingTop="@dimen/nav_header_vertical_spacing"
    android:text="Android Studio"
    android:textAppearance="@style/TextAppearance.AppCompat.Body1" />

<TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="[email protected]" />

por

<TextView
    android:id="@+id/textViewCabeza"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingTop="@dimen/nav_header_vertical_spacing"
    android:text="Android Studio"
    android:textAppearance="@style/TextAppearance.AppCompat.Body1" />

<TextView
    android:id="@+id/textViewCorreo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="[email protected]" />

ahora puedes obtener los TextField con

TextView mTextViewCabeza = findViewById(R.id.textViewCabeza);
TextView mTextViewCorreo = findViewById(R.id.textViewCorreo);

y remplazar sus textos segun tus datos obtenidos de la BD.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *