简体   繁体   中英

Problems getting value from intent

I know this have been ask several times, but i cant find why i cant get the value from this intent. I have tried several times but they are always "null", it is the intent "i" from ArrayAdapterSocio.java. Please help me if you can.

ArrayAdapterSocio.java

package com.example.polideportivo1;

import java.util.ArrayList;
import java.util.List;

import javax.xml.datatype.Duration;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class ArrayAdapterSocio extends ArrayAdapter<Socios>{

    Context context;
    int layoutResourceId;
    ArrayList<Socios>socio = VariablesGlobales.getInstance().getSocios();

    public ArrayAdapterSocio(Context context, int layoutResourceId, ArrayList<Socios> soc) {
        super(context, layoutResourceId, soc);
        this.context= context;
        this.layoutResourceId = layoutResourceId;
        this.socio = soc;


    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        View item = convertView;
        CapturadorSocio CapturadorSocio = null;

        if (item == null) {
            LayoutInflater inflater = ((Activity) context).getLayoutInflater();
            item = inflater.inflate(layoutResourceId, parent, false);
            CapturadorSocio = new CapturadorSocio();
            CapturadorSocio.nombre = (TextView) item.findViewById(R.id.textNombre);
            CapturadorSocio.apellido = (TextView) item.findViewById(R.id.textApellido);
            CapturadorSocio.documento = (TextView) item.findViewById(R.id.textCI);
            CapturadorSocio.sexo = (TextView) item.findViewById(R.id.textSexo);
            CapturadorSocio.estadoCivil = (TextView) item.findViewById(R.id.textEstadoCivil);
            CapturadorSocio.nacionalidad = (TextView) item.findViewById(R.id.textNacionalidad);
            CapturadorSocio.fechaNacimiento = (TextView) item.findViewById(R.id.textNacimiento);
            CapturadorSocio.domicilio = (TextView) item.findViewById(R.id.textDomicilio);
            CapturadorSocio.localidad = (TextView) item.findViewById(R.id.textLocalidad);
            CapturadorSocio.telfijo = (TextView) item.findViewById(R.id.textTelFijo);
            CapturadorSocio.telcelular = (TextView) item.findViewById(R.id.textTelCel);
            CapturadorSocio.correo = (TextView) item.findViewById(R.id.textCorreo);
            CapturadorSocio.edit = (Button) item.findViewById(R.id.btnEdit);
            CapturadorSocio.delete = (Button) item.findViewById(R.id.btnDelete);
            item.setTag(CapturadorSocio);
        } else {
            CapturadorSocio = (CapturadorSocio) item.getTag();
        }

        Socios socios = socio.get(position);
        CapturadorSocio.nombre.setText(socios.obtenerNombre());
        CapturadorSocio.apellido.setText(socios.obtenerApellido());
        CapturadorSocio.documento.setText(socios.obtenerCI());
        CapturadorSocio.sexo.setText(socios.obtenerSexo());
        CapturadorSocio.estadoCivil.setText(socios.obtenerEstadoCivil());
        CapturadorSocio.nacionalidad.setText(socios.obtenerNacionalidad());
        CapturadorSocio.fechaNacimiento.setText(socios.obtenerFechaNacimiento());
        CapturadorSocio.domicilio.setText(socios.obtenerDomicilio());
        CapturadorSocio.localidad.setText(socios.obtenerLocalidad());
        CapturadorSocio.telfijo.setText(socios.obtenerTelefonoFijo());
        CapturadorSocio.telcelular.setText(socios.obtenerCelular());
        CapturadorSocio.correo.setText(socios.obtenerCorreo());

        //CapturadorSocio.edit.setTag(socios.obtenerCI());

        CapturadorSocio.delete.setOnClickListener(new OnClickListener () {

            @Override
            public void onClick(View v) {
                Socios borrarSocio = socio.get(position);
                VariablesGlobales.getInstance().getSocios().remove(borrarSocio);
                notifyDataSetChanged();

                Toast t= Toast.makeText(context, "Los datos fueron borrados", Toast.LENGTH_SHORT);
                t.show();

            }});

        CapturadorSocio.edit.setOnClickListener(new OnClickListener () {

        @Override
        public void onClick(View v) {
            //switch(v.getId()) {
            //case R.id.btnEdit:
                boolean modificar = true;
                Socios socios = socio.get(position);
                String numID = socios.obtenerCI();
                Intent i = new Intent(getContext(), AltaSocio.class);
                i.putExtra("Numero_ID", numID);
                i.putExtra("Modificador", modificar);
                context.startActivity(i);
                //break;

                //default:
                //break;



        }});



        return item;

    }





    static class CapturadorSocio {
        TextView nombre;
        TextView apellido;
        TextView documento;
        TextView sexo;
        TextView estadoCivil;
        TextView nacionalidad;
        TextView fechaNacimiento;
        TextView domicilio ;
        TextView localidad;
        TextView telfijo;
        TextView telcelular;
        TextView correo;
        Button edit;
        Button delete;
    }






}

AltaSocio.java

package com.example.polideportivo1;

import java.text.DateFormat;
import java.text.Format;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;
import android.widget.AdapterView.OnItemSelectedListener;



public class AltaSocio extends Activity {
    Socios nuevosSocio = new Socios("","","","","","","","","","","","");
    private EditText editDocumento;
    private EditText editApellido;
    private EditText editNombre;
    private CheckBox checkBoxM;
    private CheckBox checkBoxF;
    private EditText editCivil;
    private Spinner Nacionalidad;
    private EditText Nacimiento;
    private EditText Domicilio;
    private Spinner Localidad;
    private EditText Celular;
    private EditText TelFijo;
    private EditText Correo;
    String miNacionalidad;
    String miLocalidad;
    String numero_id;
    boolean modificar;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.alta_socio2);

        editDocumento = (EditText)findViewById(R.id.editDocumento);
        editApellido = (EditText)findViewById(R.id.editApellido);
        editNombre = (EditText)findViewById(R.id.editNombre);
        editCivil = (EditText)findViewById(R.id.editCivil);
        Nacimiento = (EditText)findViewById(R.id.editNacimiento);
        Domicilio = (EditText)findViewById(R.id.editDomicilio);
        Celular = (EditText)findViewById(R.id.editCelular);
        TelFijo = (EditText)findViewById(R.id.editFijo);
        Correo = (EditText)findViewById(R.id.editCorreo);
        checkBoxM = (CheckBox)findViewById(R.id.checkM);
        checkBoxF = (CheckBox)findViewById(R.id.checkF);
        Nacionalidad = (Spinner)findViewById(R.id.spinnerNacionalidad);
        Localidad = (Spinner)findViewById(R.id.spinnerLocalidad);

        final Button BtnCrear = (Button)findViewById(R.id.botonCrear);
        final Button BtnCerrar = (Button)findViewById(R.id.buttonAtras);



        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.Nacionalidad, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
        Nacionalidad.setAdapter(adapter);

        Nacionalidad.setOnItemSelectedListener(new OnItemSelectedListener () {


            @Override
            public void onItemSelected(AdapterView<?> parent, View view,
                    int pos, long id) {
                parent.getItemAtPosition(pos);
                miNacionalidad = Nacionalidad.getItemAtPosition(pos).toString();
            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                //another call

            }

        });

        ArrayAdapter<CharSequence> adapter2 = ArrayAdapter.createFromResource(this, R.array.Localidad, android.R.layout.simple_spinner_item);
        adapter2.setDropDownViewResource(android.R.layout.simple_spinner_item);
        Localidad.setAdapter(adapter2);

        Localidad.setOnItemSelectedListener(new OnItemSelectedListener () {


            @Override
            public void onItemSelected(AdapterView<?> parent, View view,
                    int pos, long id) {
                parent.getItemAtPosition(pos);
                miLocalidad = Localidad.getItemAtPosition(pos).toString();
            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                //another call

            }
        });


        Bundle extras = getIntent().getExtras();
        if (extras!=null){
            String numero_id = extras.getString("Numero_ID");

        }

        Bundle otroextras = getIntent().getExtras();
        if (otroextras!=null) {
            boolean modificar = otroextras.getBoolean("Modificador");
        }

        //Intent intent = getIntent();
        //numero_id = intent.getStringExtra(ArrayAdapterSocio.Numero_ID);

        //Intent i = getIntent();
        //modificar = i.getStringExtra(ArrayAdapterSocio.Modificador) != null;


        if (modificar == true) {
            Socios modificarSocio = VariablesGlobales.getInstance().ComparaSocio(numero_id);
            editDocumento.setFocusable(false);
            editDocumento.setEnabled(false);
            modificarSocio.obtenerApellido();
            modificarSocio.obtenerNombre();
            modificarSocio.obtenerSexo();
            modificarSocio.obtenerEstadoCivil();
            modificarSocio.obtenerNacionalidad();
            modificarSocio.obtenerFechaNacimiento();
            modificarSocio.obtenerLocalidad();
            modificarSocio.obtenerDomicilio();
            modificarSocio.obtenerTelefonoFijo();
            modificarSocio.obtenerCelular();
            modificarSocio.obtenerCorreo();
            editDocumento.setText(modificarSocio.obtenerApellido());
            editNombre.setText(modificarSocio.obtenerNombre());
        }


    }

    public void grabar(View v) {
        nuevosSocio.setCI(editDocumento.getText().toString());
        nuevosSocio.setApellido(editApellido.getText().toString());
        nuevosSocio.setNombre(editNombre.getText().toString());
        nuevosSocio.setEstadoCivil(editCivil.getText().toString());

        DateFormat formateador = new SimpleDateFormat("dd/MM/yyyy");
        DateFormat DataSocio;

        try {
            String Fecha =(Nacimiento.getText().toString());
            formateador.parse(Fecha);
            nuevosSocio.setFechaNacimiento(Fecha);
        }
        catch (ParseException e) 
            {
            Toast g = Toast.makeText(this, "Formato Fecha no valido", Toast.LENGTH_LONG);

            }
        nuevosSocio.setDomicilio(Domicilio.getText().toString());
        nuevosSocio.setTelefonoCelular(Celular.getText().toString());
        nuevosSocio.setTelefonoFijo(TelFijo.getText().toString());
        nuevosSocio.setCorreo(Correo.getText().toString());
        if (checkBoxM.isChecked()) {
            nuevosSocio.setSexo("Masculino");
        } else {
            nuevosSocio.setSexo("Femenino");
        }
        nuevosSocio.setNacionalidad(miNacionalidad);
        nuevosSocio.setLocalidad(miLocalidad);



        VariablesGlobales.getInstance().getSocios().add(nuevosSocio);
        Toast t = Toast.makeText(this, "Los datos fueron grabados",
                    Toast.LENGTH_SHORT);
        t.show();
        finish();
    }


}

VariablesGlobales.java

package com.example.polideportivo1;

import java.util.ArrayList;

import android.app.Application;

public class VariablesGlobales {
    private static VariablesGlobales instance;
    private ArrayList<Socios>socio = new ArrayList<Socios>();
    private Socios socios;
    private ArrayList<Deporte>deporte;

    public static VariablesGlobales getInstance() {
        if (instance == null)
        instance = new VariablesGlobales();

        return instance;
    }

    public static void setInstance(VariablesGlobales instance) {
        VariablesGlobales.instance = instance;
    }

    public ArrayList<Socios> getSocios(){
        return socio;

    }

    public ArrayList<Deporte> getDeporte(){
        return deporte;
    }

    public Socios ComparaSocio (String CI) {
        if (socios.obtenerCI() == CI);

        return socios;
    }

}

First off, why are you grabbing two bundles for the intent? All of the extras should be in the same bundle.

And it is good practice to have your String IDs for the Intent extras saved as constants so that you can be sure they are the same.

But it looks like your Adapter class is being created by your AltaSocio activity. This means that the intent that started the AltaSocio activity in the first place is not the one that is thrown by the adapter (meaning no extras).

What are you trying to do with this code? Becasue at the moment you have an activity that opens another instance of itself.

use v.getContext() or context as first parameter in Intent constructor to start second Activity on Button click from ArrayAdapterSocio class :

 Intent i = new Intent(v.getContext(), AltaSocio.class);

or

Intent i = new Intent(context, AltaSocio.class);

I am passing values between activities. Call Bundle below onCreate only in second activity.

MainActivity.java

    package com.example.activitydatasend;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button click = (Button) findViewById(R.id.click);

        click.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                Intent intent = new Intent(MainActivity.this,Second.class);
                intent.putExtra("first", "first");
                intent.putExtra("second", "second");
                startActivity(intent);

            }
        });
    }

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

}

Second.java

package com.example.activitydatasend;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class Second extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.second);
        Bundle bundle = getIntent().getExtras();
        String a = bundle.getString("first");
        String b = bundle.getString("second");
        System.out.println(a+b);
    }

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

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM