Autore Topic: AlertDialog associato ad un bottone  (Letto 971 volte)

Offline Agosteeno

  • Utente normale
  • ***
  • Post: 152
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Sony Ericsson - Xperia Neo
  • Sistema operativo:
    Ubuntu 11.04
AlertDialog associato ad un bottone
« il: 18 Novembre 2010, 13:19:28 CET »
0
Salve a tutti, ho un problema che nn so' come risolvere: ho una piccola applicazione e ad un certo punto voglio poter cancellare tutte le voci di un db. C'e' quindi un pulsante che serve per cancellare tutto. Io vorrei che al click di questo pulsante partisse una icona di notifica che mi chiedesse se continuare o meno. Prima per farlo creavo una nuova activity con 2 bottoni (uno per il si e uno per il no) ma nn mi sembra una buona idea. Quindi vorrei usare l'icona di notifica, pensata appunto per queste cose. Questo e' il codice che ho scritto:
Codice (Java): [Seleziona]
...
private View.OnClickListener onCanc = new OnClickListener(){
                public void onClick(View v)
                {
                        AlertDialog.Builder builder = new AlertDialog.Builder(this);
                        builder.setTitle("Conferma");
                        builder.setMessage("Sei Veramente sicuro?");
                        builder.setCancelable(false);
                        builder.setPositiveButton("Cancella", new DialogInterface.OnClickListener() {
                               
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                        // TODO Auto-generated method stub
                                        dismissDialog(DIALOG_CONFIRM_ID);
                                        deleteDatabase("Studente1.db");
                                }
                        });
                        builder.setNegativeButton("Annulla", new DialogInterface.OnClickListener() {
                               
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                        // TODO Auto-generated method stub
                                        dismissDialog(DIALOG_CONFIRM_ID);
                                }
                        });
                }
        };
...
Il fatto e' che nn posso costruire AlertDialog.Builder builder = new AlertDialog.Builder(this); dentro  l'on click listener. Ho provato a metterlo all'inizio ma mi dice che deve essere all'interno dell'on create. Inoltre se lo metto nell'oncreate, giustamente qua nn c'e' visibilita'... Non so' come risolvere la situazione...
Risparmia l'acqua, bevi birra...

Offline Agosteeno

  • Utente normale
  • ***
  • Post: 152
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Sony Ericsson - Xperia Neo
  • Sistema operativo:
    Ubuntu 11.04
Re:AlertDialog associato ad un bottone
« Risposta #1 il: 18 Novembre 2010, 13:24:32 CET »
0
Mi sono scordato prima: se dichiaro l' AlertDialog all'inizio (prima dell'oncreate per intenderco), mi da' errore a RunTime: unable to instantiate activity ComponentInfo .... caused by: java.lang.illegalStateException: System services not available to activities before oncreate()
Risparmia l'acqua, bevi birra...

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:AlertDialog associato ad un bottone
« Risposta #2 il: 18 Novembre 2010, 13:47:56 CET »
+2
se tu fai:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
gli dai come context l'onClickListener,ed è sbagliato.
Devi invece dargli nomeactivity.this

ad esempio se la tua activity si chiama AlertActivity fai:

AlertDialog.Builder builder = new AlertDialog.Builder(AlertActivity.this);

Lo scoping delle variabili è mooolto importante nella programmazione
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia