Hi, Use dialog.setAutoDispose(false); Dialogs automatically dispose when a command is selected within them. This is the common use case for dialogs e.g. Yes/No, OK/Cancel etc.
On Friday, January 22, 2021 at 11:30:45 AM UTC+2 P5music wrote: > What happens if you use showDialog() also in the other dialogs instead of > show()? > > Il giorno giovedì 21 gennaio 2021 alle 23:39:19 UTC+1 [email protected] > ha scritto: > >> Hi, >> >> From a Form I call a method that launches the Dialog component. The >> launch code is this: >> >> >> >> mbNombre.addActionListener((e) -> { >> >> if (seleccion) { >> >> Command ok = new Command("ok"); >> >> Visita v = new Visita(); >> >> v.visitaId.set(null); >> >> v.clienteId.set(clt.clienteId.get()); >> >> v.latitud.set(clt.latitud.get()); >> >> v.longitud.set(clt.longitud.get()); >> >> *Dialog d = creaVisita(v, clt.nombre.get(), ok);* >> >> if (d.showDialog() == ok) { >> >> procesaRegistro(v, VISITA); >> >> formaVisita.creaItemVisitas(v); >> >> muestraVisitas(formaVisita.getContenedorVisitas()); >> >> } >> >> fRetorno.showBack(); >> >> } >> >> }); >> >> >> >> The method displays the Dialog compent with all the components that you >> add to it without problems. Pressing the btAceptar button performs 2 >> validations and displays the error messages in each case. The problem is >> that it automatically executes the "dispose" and returns control to the >> small code where it was launched (as if it were pressing the "ok" >> component). >> >> >> >> private Dialog creaVisita(Visita v, String nombre, Command ok) { >> >> >> >> Dialog dlVisita = new Dialog(new BorderLayout()); >> >> Label lbTitulo = new Label(nombre, "MultiLine1"); >> >> lbTitulo.getAllStyles().setAlignment(Component.CENTER); >> >> dlVisita.setTitleComponent(lbTitulo); >> >> dlVisita.setDialogUIID("Form"); >> >> >> >> Label lbDescripcion = new Label(idioma.getDescripcion() + ":"); >> >> TextArea txDescripcion = new TextArea(); >> >> txDescripcion.setFocus(true); >> >> Container cnDescripcion = new Container(new >> BoxLayout(BoxLayout.Y_AXIS)).add(lbDescripcion).add(txDescripcion); >> >> >> >> Tarea t = new Tarea(); >> >> ArrayList aTarea = consultaTablas(t, TAREA); >> >> if (aTarea.isEmpty()) { >> >> Dialog.show(idioma.getError(), "Inexplicable: No existen >> tareas creadas", idioma.getContinuar(), null); >> >> dlVisita.dispose(); >> >> } >> >> >> >> Label lbTarea = new Label(idioma.getMensaje12() + ":"); >> >> RadioButton[] rb = new RadioButton[aTarea.size() + 1]; >> >> >> >> Container cnTarea = new Container(new >> BoxLayout(BoxLayout.Y_AXIS)); >> >> cnTarea.setScrollableY(true); >> >> for (int i = 0; i < aTarea.size(); i++) { >> >> t = (Tarea) aTarea.get(i); >> >> rb[i] = new RadioButton(t.descripcion.get()); >> >> rb[i].getAllStyles().setAlignment(Component.LEFT); >> >> // rb[i].setUIID("Label"); >> >> cnTarea.add(rb[i]); >> >> } >> >> >> >> Container cnTareas = new Container(new >> BoxLayout(BoxLayout.Y_AXIS)).add(lbTarea).add(cnTarea); >> >> >> >> Container cnItem = new Container(new BorderLayout()); >> >> cnItem.add(BorderLayout.NORTH, cnDescripcion); >> >> cnItem.add(BorderLayout.CENTER, cnTareas);; >> >> >> >> Style sItem = cnItem.getUnselectedStyle(); >> >> sItem.setBgTransparency(255); >> >> sItem.setBgColor(0xeeeeee); >> >> sItem.setMarginUnit(Style.UNIT_TYPE_DIPS); >> >> sItem.setPaddingUnit(Style.UNIT_TYPE_DIPS); >> >> sItem.setMargin(1, 0, 1, 1); >> >> sItem.setPadding(2, 1, 2, 2); >> >> >> >> Button btCancelar = new Button(idioma.getCancelar(), >> "MensajeRojo"); >> >> btCancelar.addActionListener((e) -> { >> >> dlVisita.dispose(); >> >> }); >> >> >> >> Button btAceptar = new Button(ok); >> >> btAceptar.setText(idioma.getAceptar()); >> >> btAceptar.setUIID("MensajeVerde"); >> >> btAceptar.addActionListener((e) -> { >> >> if (txDescripcion.getText().isEmpty()) { >> >> Dialog.show(idioma.getError(), idioma.getDescripcion() + >> " " + idioma.getMensaje6(), idioma.getContinuar(), null); >> >> return; >> >> } >> >> boolean encontro = false; >> >> for (int i = 0; i < rb.length - 1; i++) { >> >> if (rb[i].isSelected()) { >> >> encontro = true; >> >> break; >> >> } >> >> } >> >> if (!encontro) { >> >> Dialog.show(idioma.getError(), idioma.getTarea() + " " + >> idioma.getMensaje6(), idioma.getContinuar(), null); >> >> return; >> >> } >> >> v.descripcion.set(txDescripcion.getText()); >> >> v.fechaFuente.set(Preferences.get("fecha", >> System.currentTimeMillis())); >> >> v.distancia.set(distancia(v.latitud.get() == null ? 0d : >> v.latitud.get(), v.longitud.get() == null ? 0d : v.longitud.get())); >> >> v.modoPendiente.set(MODO_ADICION); >> >> v.estado.set(PENDIENTE); >> >> adicionaVisita(v); >> >> dlVisita.dispose(); >> >> >> >> }); >> >> >> >> Container cnBotones = new Container(new GridLayout(1, >> 2)).add(btCancelar).add(btAceptar); >> >> dlVisita.add(BorderLayout.NORTH, cnItem); >> >> dlVisita.add(BorderLayout.SOUTH, cnBotones); >> >> return dlVisita; >> >> } >> > -- You received this message because you are subscribed to the Google Groups "CodenameOne Discussions" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/codenameone-discussions/42267510-3cd5-415e-89b2-e4b06439ffeen%40googlegroups.com.
