我不知道意图发生了什么,我已经对其进行了很好的回顾 但这是代码。
private void abriendoOtraVentana() {
Intent abrirSissolServicioIntent = new Intent(getApplicationContext(), InfVisTecnico.class);
Bundle bundle = new Bundle();
bundle.putSerializable("ubicacionCliente",this.cliente_servicio);
abrirSissolServicioIntent.putExtras(bundle); // the problem is here.
startActivity(abrirSissolServicioIntent);
}
当我在提示“问题出在这里”的行上注释掉时,我的应用程序运行正常,但是当我不注释该行时,当我按按钮转到其他活动时,我的应用程序关闭。顺便说一下,对象this.cliente_servicio
实现了Serializable
,并且我与传递对象的其他活动具有相同的含义,并且它运行良好,我不知道这里发生了什么。如果您需要更多代码,我可以告诉您。感谢您的帮助。
答案 0 :(得分:0)
用于检索传递到Bundle
的对象的密钥不正确。正确的密钥是“ ubicacionCliente”。因此整个检索看起来像这样:
Bundle recibirHorarioVisista = getIntent().getExtras();
if(recibirHorarioVisista != null){
this.cliente_servi = (Cliente_Servicio)recibirHorarioVisista.getSerializable("ubicacionCliente");
}
答案 1 :(得分:0)
public class SisSolServicio extends AppCompatActivity implements View.OnClickListener,Serializable {
//intents que dirijen a donde quiere irse
//Bundle Donde se podria pasar datos
//Barra de progreso
private ProgressDialog barraDeProgresoInstCliente;
//los objetos del formulario de solicitud de servicio
private EditText etNombre,etApellidos,etCelularOTel,etci;
private CheckBox checkTvCable,checkInternet;
private Button btnEnviarSolicitudServicio;
//objetos necesarios para solicitar servicio
private Ubicacion ubicacionCliente;
private Cliente clienteSolicitante;
private Servicio servicioSolicitado;
private Cliente_Servicio cliente_servicio;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sis_sol_servicio);
recibirUbicacionCliente();
crearLosObjetos();
crearObjetosFormulario();
this.btnEnviarSolicitudServicio.setOnClickListener(this);
}
private void crearLosObjetos() {// crea los objetos neceseraios para la solicitud de un servicio
this.clienteSolicitante = new Cliente();
this.servicioSolicitado = new Servicio();
this.cliente_servicio = new Cliente_Servicio();
}
private void crearObjetosFormulario() {
this.etNombre = (EditText)findViewById(R.id.etNombreSolServicio);
this.etApellidos = (EditText) findViewById(R.id.etapellidosSolServicios);
this.etCelularOTel = (EditText) findViewById(R.id.etnrocelotelSolServicio);
this.etci = (EditText) findViewById(R.id.etCiSolServicio);
this.btnEnviarSolicitudServicio = (Button)findViewById(R.id.btnEnviarSolicitudServicio);
this.barraDeProgresoInstCliente = new ProgressDialog(this);
this.checkInternet = (CheckBox) findViewById(R.id.checkinternetSolServicio);
this.checkTvCable = (CheckBox) findViewById(R.id.checktvcableSolServicio);
}
@Override
public void onClick(View v) {
this.barraDeProgresoInstCliente.setMessage("Añadiendo.....");
this.barraDeProgresoInstCliente.show();
llenarElObjectoClienteDeDatos();
int c = llenarElObjetoCliente_servicio();
if (c == 0){
Toast.makeText(this,"Porfavor debe ingresar a lo menos un servicio",Toast.LENGTH_LONG).show();
this.barraDeProgresoInstCliente.hide();
return;
}
this.clienteSolicitante.insertarNuevoCliente(SisSolServicio.this);
this.ubicacionCliente.insertarUbicacionCliente(SisSolServicio.this,this.clienteSolicitante.getCi());
AñadirElObjetoCliente_servicio(c);
this.barraDeProgresoInstCliente.hide();
abriendoOtraVentana();
}
private void abriendoOtraVentana() {
Intent abrirSissolServicioIntent = new Intent(SisSolServicio.this, InfVisTecnico.class);
Bundle bundle = new Bundle();
bundle.putSerializable("ubicacionCliente",this.cliente_servicio);
abrirSissolServicioIntent.putExtras(bundle); // the problem is here.
startActivity(abrirSissolServicioIntent);
}
private void AñadirElObjetoCliente_servicio(int c) {
if(c == 1){
if(this.checkTvCable.isChecked()){
this.cliente_servicio.inCliente_Servicio(this.clienteSolicitante.getCi(),200,this);
}else{
this.cliente_servicio.inCliente_Servicio(this.clienteSolicitante.getCi(),100,this);
}
}else{
this.cliente_servicio.inCliente_Servicio(this.clienteSolicitante.getCi(),200,this);
this.cliente_servicio.inCliente_Servicio(this.clienteSolicitante.getCi(),100,this);
}
}
private int llenarElObjetoCliente_servicio() {
int c = 0;
this.cliente_servicio.setCi_Cliente(this.clienteSolicitante.getCi());
this.cliente_servicio.setEstado(Cliente_Servicio.PENDIENTE);
this.cliente_servicio.setEstado_asignacion(Cliente_Servicio.NO_ASIGNADO);
this.cliente_servicio.TratarHorayFecha();
List<String> ListaSolicitud= verServiciosSolicitados();
return ListaSolicitud.size();
}
private List<String> verServiciosSolicitados() {
List<String> servicios = new ArrayList<>();
if(this.checkTvCable.isChecked() && this.checkInternet.isChecked()){
servicios.add(this.checkTvCable.getText().toString()) ;
servicios.add(this.checkInternet.getText().toString());
}else{
if(this.checkInternet.isChecked()){
servicios.add(this.checkInternet.getText().toString());
}else {
if(this.checkTvCable.isChecked()){
servicios.add(this.checkTvCable.getText().toString());
}
}
}
return servicios;
}
private void llenarElObjectoClienteDeDatos() { /// estamos poblando de datos el objeto cliente
this.clienteSolicitante.setApellido(this.etApellidos.getText().toString());
this.clienteSolicitante.setCelular(Integer.parseInt(this.etCelularOTel.getText().toString()));
this.clienteSolicitante.setCi(Integer.parseInt(this.etci.getText().toString()));
this.clienteSolicitante.setNombre(this.etNombre.getText().toString());
}
private void recibirUbicacionCliente() { // recibe el objeto ubicacion del cliente
Bundle recibirObjetoUbicacion = getIntent().getExtras();
if(recibirObjetoUbicacion!=null){
this.ubicacionCliente = (Ubicacion) recibirObjetoUbicacion.getSerializable("ubicacionCliente");
}
}
}
这是InfVisTecnico活动代码:
public class InfVisTecnico extends AppCompatActivity implements View.OnClickListener {
private Cliente_Servicio cliente_servi;
private TextView tvFecha,tvHora;
private Button BtnHecho;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_inf_vis_tecnico);
Bundle recibirHorarioVisista = getIntent().getExtras();
if(recibirHorarioVisista!= null){
this.cliente_servi = (Cliente_Servicio) recibirHorarioVisista.getSerializable("ubicacionCliente");
}
inicializarObjetosForm();
//mostrarDatos();
}
private void mostrarDatos() {
this.tvFecha.setText(String.format("%s-%s-%s", String.valueOf(this.cliente_servi.getFechayhoraActual().get(Calendar.DAY_OF_MONTH)), String.valueOf(this.cliente_servi.getFechayhoraActual().get(Calendar.MONTH)), String.valueOf(this.cliente_servi.getFechayhoraActual().get(Calendar.YEAR)))
);
this.tvHora.setText(String.format("%s:%s", String.valueOf(this.cliente_servi.getFechayhoraActual().get(Calendar.HOUR)), String.valueOf(this.cliente_servi.getFechayhoraActual().get(Calendar.MINUTE)))
);
}
private void inicializarObjetosForm() {
this.tvFecha = (TextView) findViewById(R.id.tviewFechaVisita);
this.tvHora = (TextView) findViewById(R.id.tviewHoraVisita);
this.BtnHecho = (Button) findViewById(R.id.btnHecho);
this.BtnHecho.setOnClickListener(this);
}
@Override
public void onClick(View v) {
}
}