Autore Topic: dialog visualizzato due volte  (Letto 545 volte)

Offline Andre99

  • Utente junior
  • **
  • Post: 54
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Vodafone 875
  • Play Store ID:
    F. Andreuzzi
  • Sistema operativo:
    Linux Mint 16 Cinnamon
dialog visualizzato due volte
« il: 11 Luglio 2014, 13:48:32 CEST »
0
ciao,  ho un problema con un dialog. dopo averlo creato e dopo aver richiamato il metodo show() questo viene visualizzato due volte. Cioè, una volta premuto un bottone che dovrebbe farlo chiudere, ne trovo un altro subito dietro di lui. Posto il codice:

Codice (Java): [Seleziona]
AlertDialog alert = new AlertDialog.Builder(this.getActivity()).create();
                        intent = this.getActivity().getIntent();
                        LayoutInflater inf = this.getActivity().getLayoutInflater();
                        alert.setView(inf.inflate(R.layout.hour_dialog, null));
                        alert.setTitle("Imposta l orario");
                        alert.setButton(AlertDialog.BUTTON_POSITIVE, "Fatto", new DialogInterface.OnClickListener() {          
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                        // TODO Auto-generated method stub
                                        dialog.dismiss();
                                }
                        });
                        alert.show();

cosa ho sbagliato?  ???
Andre99
Trieste-12/12/1999
T-UI, Terminal Console Launcher: https://play.google.com/store/apps/details?id=ohi.andre.consolelauncher

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 717
  • Respect: +151
    • Github
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Huawei P9 Lite
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:dialog visualizzato due volte
« Risposta #1 il: 11 Luglio 2014, 14:33:30 CEST »
0
Nella prima riga devi togliere ".create()"
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline Andre99

  • Utente junior
  • **
  • Post: 54
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Vodafone 875
  • Play Store ID:
    F. Andreuzzi
  • Sistema operativo:
    Linux Mint 16 Cinnamon
Re:dialog visualizzato due volte
« Risposta #2 il: 11 Luglio 2014, 14:52:04 CEST »
0
Ho cambiato così, ma ho lo stesso problema...
Codice (Java): [Seleziona]
AlertDialog.Builder alert = new AlertDialog.Builder(this.getActivity());
                        intent = this.getActivity().getIntent();
                        LayoutInflater inf = this.getActivity().getLayoutInflater();
                        alert.setView(inf.inflate(R.layout.hour_dialog, null));
                        alert.setTitle("Imposta l orario");
                        alert.setPositiveButton("Fatto", new DialogInterface.OnClickListener() {               
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                        // TODO Auto-generated method stub
                                        dialog.dismiss();
                                }
                        });
                        alert.show();
Andre99
Trieste-12/12/1999
T-UI, Terminal Console Launcher: https://play.google.com/store/apps/details?id=ohi.andre.consolelauncher

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 717
  • Respect: +151
    • Github
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Huawei P9 Lite
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:dialog visualizzato due volte
« Risposta #3 il: 11 Luglio 2014, 16:46:44 CEST »
0
Non mi sembra ci siano errori (anche se intent = this.getActivity().getIntent(); mi sembra inutile).

Forse il problema è a monte.
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline Andre99

  • Utente junior
  • **
  • Post: 54
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Vodafone 875
  • Play Store ID:
    F. Andreuzzi
  • Sistema operativo:
    Linux Mint 16 Cinnamon
Re:dialog visualizzato due volte
« Risposta #4 il: 12 Luglio 2014, 18:06:06 CEST »
0
ho provato a fare lo stesso con un TimePickerDialog, ma il dialog continua ad essere visualizzato per 2 volte...

Post unito: 12 Luglio 2014, 18:39:52 CEST
ho risolto!
ho inserito una variabile count che in pratica impedisce al  dialog di essere visualizzato due volte. Il problema stava nel fatto che ad un normale tocco in realtà ne corrispondono altri di un numero indefinito (non si è mai certi del numero di eventi che verrà generato). In pratica ho modificato così:

Codice (Java): [Seleziona]
if(count == 0)
                {
                        switch(v.getId())
                        {
                        case R.id.text_date:
                                count = 1;
                                int cday = calendar.get(Calendar.DAY_OF_MONTH);
                                int cmonth = calendar.get(Calendar.MONTH);
                                int cyear = calendar.get(Calendar.YEAR);
                                new DatePickerDialog(this.getActivity(), new DatePickerDialog.OnDateSetListener() {

                                        @Override
                                        public void onDateSet(DatePicker view, int year, int monthOfYear,
                                                        int dayOfMonth) {
                                                // TODO Auto-generated method stub
                                                count = 0;
                                                intent.putExtra("day", dayOfMonth);
                                                intent.putExtra("month", monthOfYear);
                                                intent.putExtra("year", year);
                                        }
                                },cyear, cmonth, cday).show();
                                break;
« Ultima modifica: 12 Luglio 2014, 18:39:52 CEST da Andre99, Reason: Merged DoublePost »
Andre99
Trieste-12/12/1999
T-UI, Terminal Console Launcher: https://play.google.com/store/apps/details?id=ohi.andre.consolelauncher

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 717
  • Respect: +151
    • Github
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Huawei P9 Lite
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:dialog visualizzato due volte
« Risposta #5 il: 12 Luglio 2014, 19:17:48 CEST »
0
1) Da quello che dici sembra che intercetti l'evento di tocco al posto di quello di click. Non ti conviene usare quest'ultimo? O hai esigenze particolari?

2) Se annulli l'inserimento della data con il tasto back forse il contatore non viene resettato ed il dialog non si apre più.
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline Andre99

  • Utente junior
  • **
  • Post: 54
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Vodafone 875
  • Play Store ID:
    F. Andreuzzi
  • Sistema operativo:
    Linux Mint 16 Cinnamon
Re:dialog visualizzato due volte
« Risposta #6 il: 12 Luglio 2014, 20:58:47 CEST »
0
si, uso l evento di tocco, perchè mi serve che sia azionato dal tocco su una textview. comunque ho provato, ed il dialog si apre lo stesso senza problemi

Post unito: 12 Luglio 2014, 21:03:22 CEST
ah, accidenti, ci ho riprovato dopo aver compilato e hai ragione :-P. comunque ho risolto impostando con setCancelable(false)
« Ultima modifica: 12 Luglio 2014, 21:03:22 CEST da Andre99, Reason: Merged DoublePost »
Andre99
Trieste-12/12/1999
T-UI, Terminal Console Launcher: https://play.google.com/store/apps/details?id=ohi.andre.consolelauncher