从意图中获得价值的问题

时间:2013-11-30 17:46:22

标签: java android android-intent

我知道这已被问过好几次,但我无法找到为什么我无法从这个意图中获得价值。我已经尝试过几次,但它们总是“null”,它是ArrayAdapterSocio.java中的意图“i”。如果可以,请帮助我。

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;
    }

}

3 个答案:

答案 0 :(得分:0)

首先,为什么你为了意图抓住两个捆绑?所有额外内容应该在同一个包中。

最好将Intent extras的String ID保存为常量,这样您就可以确定它们是相同的。

但看起来你的Adapter类是由你的AltaSocio活动创建的。这意味着首先启动AltaSocio活动的意图不是适配器抛出的意图(意味着没有额外的)。

您要对此代码执行什么操作?当你有一个活动打开另一个自己的实例时。

答案 1 :(得分:0)

使用v.getContext()context作为Intent构造函数中的第一个参数,从ArrayAdapterSocio类启用第二个Activity on Button:

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

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

答案 2 :(得分:0)

我在活动之间传递价值观。只在第二个活动中打电话给下面的onCreate。

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;
    }

}