Autore Topic: calcellare un carattere inserito in una edittext programmaticamente  (Letto 468 volte)

Offline broke31

  • Nuovo arrivato
  • *
  • Post: 36
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy s6
  • Sistema operativo:
    windows
Salve ragazzi, ho  un problema nello sviluppo di una app, ho una edittext dove deve essere inserita una data, adesso programmaticamente quando vengono inseriti 2 caratteri in automatico aggiunge il carattere "-", quando vengono inseriti i secondi due caratteri inserisce un secondo -   così da ottenere una formattazione  del testo in questo modo:"dd-mm-yyyy"
il problema è che quando provo a cancellare  dei caratteri tramite la tastiera il cursore si blocca al secondo meno(partendo da sinistra) come se non potessi cancellare un carattere inserito da codice, non ho idea di come sistemare questo bug, voi avete qualche idea?? vi allego la parte del codice buggata:
Codice (Java): [Seleziona]
 @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            String meno="-";


                    if (s.length() == 2)
                        data.setText(data.getText()+meno);
                    if (s.length() == 5)
                        data.setText(data.getText()+meno);

            data.setSelection(data.getText().length());// una volta inserito il potenziale carattere "-" porto il cursore alla destra del carattere "-"
                }
grazie in anticipo

Offline tonno16

  • Utente storico
  • *****
  • Post: 1197
  • Respect: +58
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:calcellare un carattere inserito in una edittext programmaticamente
« Risposta #1 il: 29 Aprile 2016, 13:46:44 CEST »
0
Io apro un timepicker

Offline broke31

  • Nuovo arrivato
  • *
  • Post: 36
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy s6
  • Sistema operativo:
    windows
Re:calcellare un carattere inserito in una edittext programmaticamente
« Risposta #2 il: 29 Aprile 2016, 13:58:22 CEST »
0
Ora gli ho dato una occhiata ai datapicker, ma la tua idea sarebbe quella di far visualizzare um datapicker alla pressione di un tasto? Perchè a quanto ho visto sul mio cel un datapicker si prende quasi tutta la grandezza del display, rendendo impossibile inserire gli altri dati necessari per completare la activity ( nella activity non è chiesto solo di inserire una data)

Offline tonno16

  • Utente storico
  • *****
  • Post: 1197
  • Respect: +58
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:calcellare un carattere inserito in una edittext programmaticamente
« Risposta #3 il: 29 Aprile 2016, 14:14:16 CEST »
0
Una volta che premi OK setti il testo nella editext e chiudi il dialog

Offline broke31

  • Nuovo arrivato
  • *
  • Post: 36
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy s6
  • Sistema operativo:
    windows
Re:calcellare un carattere inserito in una edittext programmaticamente
« Risposta #4 il: 29 Aprile 2016, 19:28:19 CEST »
0
ho usato una edittext che quando viene premuta mostra un datapickerDialog, il problema è che la prima volta che viene premuta la edittext non viene invocata la datapickerDialog, ma dalla successiva pressione della edittext viene mostrata la dataPickerDialog,  ti mostro il codice dell'actionListener della edittext

Codice (Java): [Seleziona]
 public void onDataEditText(View view) {
        final Calendar mcurrentDate = Calendar.getInstance();
        final int mYear = mcurrentDate.get(Calendar.YEAR);
        int mMonth = mcurrentDate.get(Calendar.MONTH);
        int mDay = mcurrentDate.get(Calendar.DAY_OF_MONTH);
        DatePickerDialog dpd = new DatePickerDialog(this,
                new DatePickerDialog.OnDateSetListener() {

                    @Override
                    public void onDateSet(DatePicker view, int year,
                                          int monthOfYear, int dayOfMonth) {
                        data.setText(String.format("%d/%d/%d", year, monthOfYear + 1, dayOfMonth));

                    }
                }, mYear, mMonth, mDay);
        dpd.show();
    }
cosa sbaglio?
edit: Il probema credo di aver capito  qual è, quando premo su una edittext la prima cosa che fa e quella di mostrare la tastiera, solo al secondo tocco della stessa edittext richiama l'actionListener collegato, il mio problema credo
sia diventato come evitare al sistema di chiamare la tastiera come prima operazione, qualcuno ha qualche soluzione?
« Ultima modifica: 29 Aprile 2016, 21:43:54 CEST da broke31 »