Autore Topic: AlertDialog annullare opzione scelta (radio button)  (Letto 832 volte)

Offline travis

  • Nuovo arrivato
  • *
  • Post: 29
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    emulatore
AlertDialog annullare opzione scelta (radio button)
« il: 22 Marzo 2013, 13:45:15 CET »
0
salve ragazzi ho un problema banale ma al quale non riesco a venire a capo. Ho un alert dialog che mi permette di scegliere tra tre lingue  e due bottoni ( Ok e Annulla). Le  opzioni sono  radio button e seleziono o uno o l'altro.
Se avvio il dialog e scelgo un opzione e clicco ok tutto a posto, memorizza lo stato.
Se invece apro il dialog, clicco su un opzione e poi clicco canc, dovrebbe annullarmi la scelta fatta e ripresentarmi il dialog all'apertura successiva con la selezione memorizzata ma non lo fa, perché???

Codice (Java): [Seleziona]
       final String [] options= {getResources().getString(R.string.opt_ita), getResources().getString(R.string.opt_eng), getResources().getString(R.string.opt_esp), getResources().getString(R.string.opt_deu)};
       
        if (locale.equals("it")) {
                bLingua.setBackgroundResource(R.drawable.bandiera_ita);
                selezione = 0;}
        else
            if(locale.equals("en")) {
                  bLingua.setBackgroundResource(R.drawable.bandiera_ing);
                  selezione = 1;}
            else
               if(locale.equals("es")) {
                 bLingua.setBackgroundResource(R.drawable.bandiera_esp);
                 selezione = 2;}
               else            
                  if(locale.equals("de")) {
                     bLingua.setBackgroundResource(R.drawable.bandiera_deu);
                         selezione = 3;}
                  else {               
                     bLingua.setBackgroundResource(R.drawable.bandiera_ing);
                     selezione = 1;}        ;
                     
        final AlertDialog.Builder build= new AlertDialog.Builder(this);
        //build.setCancelable(false);
        build.setIcon(R.drawable.freccia_giu);
        //build.setTitle(getResources().getString(R.string.msglingua));
        build.setTitle(Html.fromHtml ("<font color='#1b9a02' ><b>" +getResources().getString(R.string.msglingua)+ "</b></ font>"));
       
        build.setSingleChoiceItems(options, selezione, new DialogInterface.OnClickListener() {
                       
                public void onClick(DialogInterface dialog, int item) {
                                selezione=item;
                        }
                }
      );
   
        //memorizzo la scelta dell'utente e chiudo l'alert dialog  
          build.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
       
          public void onClick(DialogInterface dialog, int item) {
                  switch (selezione) {
                  case 0:{
                        bLingua.setBackgroundResource(R.drawable.bandiera_ita);
                    Locale localelng = new Locale("it");
                    //*Massimo
                    Locale.setDefault(localelng);
                    Configuration config = new Configuration();
                    config.locale = localelng;
                    getBaseContext().getResources().updateConfiguration(config,getBaseContext().getResources().getDisplayMetrics());
                    break;
                     }
                  case 1:{
                        bLingua.setBackgroundResource(R.drawable.bandiera_ing);
                    Locale localelng = new Locale("en");
                        //*Massimo
                    Locale.setDefault(localelng);
                    Configuration config = new Configuration();
                    config.locale = localelng;
                    getBaseContext().getResources().updateConfiguration(config,getBaseContext().getResources().getDisplayMetrics());
                    break;
                     }
                  case 2:{
                        bLingua.setBackgroundResource(R.drawable.bandiera_esp);
                    Locale localelng = new Locale("es");
                        //*Massimo
                    Locale.setDefault(localelng);
                    Configuration config = new Configuration();
                    config.locale = localelng;
                    getBaseContext().getResources().updateConfiguration(config,getBaseContext().getResources().getDisplayMetrics());
                    break;
                     }
                  case 3:{
                        bLingua.setBackgroundResource(R.drawable.bandiera_deu);
                    Locale localelng = new Locale("de");
                        //*Massimo
                    Locale.setDefault(localelng);
                    Configuration config = new Configuration();
                    config.locale = localelng;
                    getBaseContext().getResources().updateConfiguration(config,getBaseContext().getResources().getDisplayMetrics());
                    break;
                     }
                  }
                  //PlannerPage.setTitle(title_SmartPlanner);
              restartActivity();
              dialog.cancel();
           
            }
          }
        );

     //   Reimposto la lingua selezionata e chiudo l'alert dialog  
          build.setNegativeButton("Canc", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int item) {  
               
                dialog.cancel();
               
            }
           
          }//end negative Button
          );
         
        scegliLingua = build.create();

Offline lorux

  • Utente junior
  • **
  • Post: 97
  • Respect: +12
    • Google+
    • lor.catalano
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
  • Sistema operativo:
    Windows
Re:AlertDialog annullare opzione scelta (radio button)
« Risposta #1 il: 22 Marzo 2013, 16:28:57 CET »
0
beh sul negative click non mi pare ti stia salvando da qualche parte la selezione no?

edit:ah no scusa,lo fai sul click direttamente del radiobutton
controlla in debug nel click se e cosa gli passa,altrimenti puoi provare a salvarti la selezione non al momento del click sul radiobutton ma al click sull'annulla
« Ultima modifica: 22 Marzo 2013, 16:34:11 CET da lorux »

Offline Giamme

  • Nuovo arrivato
  • *
  • Post: 43
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    HTC Magic
  • Play Store ID:
    appLOOPiamo
  • Sistema operativo:
    Windows 7
Re:AlertDialog annullare opzione scelta (radio button)
« Risposta #2 il: 24 Marzo 2013, 13:33:23 CET »
0
Giusto puoi fare come ha detto Lorux

Perché al posto della serie di if che checkano la selezione non usi uno "Switch in case" ?
"Tutto ciò che è necessario per il trionfo del male è che gli uomini buoni non facciano nulla."
Edmund Burke