CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: gianpassa con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 10 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 34 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 7 su 7
Discussione:

Can't create handler.. :(

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Baby Droid


    Registrato dal
    Jul 2010
    Messaggi
    28

    Ringraziamenti
    3
    Ringraziato 0 volte in 0 Posts
    Question

    Can't create handler.. :(

    Ragazzi...approfitto della vostra disponibilità per chiedervi un altro consiglio

    Ho questo metodo, a cui passo una stringa da visualizzare come messaggio della dialog e l'istanza dell'activity che lo invoca.


    public void avvisaErrore(String str, Activity activity) {

    final Activity act = activity;

    final Intent intent;

    if(act!=null) intent = new Intent(act.getApplicationContext(),act.getClass()) ;
    else intent = new Intent(getApplicationContext(),FirstActivity.class );


    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage(str)
    .setCancelable(false)
    .setPositiveButton("Riprova", new DialogInterface.OnClickListener() {

    @Override
    public void onClick(DialogInterface dialog, int id) {

    dialog.cancel();
    act.finish();

    startActivity(intent);


    }
    })
    .setNegativeButton("Esci", new DialogInterface.OnClickListener() {

    @Override
    public void onClick(DialogInterface dialog, int id) {

    act.finish();

    }
    });
    AlertDialog alert = builder.create();
    alert.show();

    }

    ...ma quando viene invocato mi provoca questo errore:

    E/AndroidRuntime( 378): FATAL EXCEPTION: Timer-0
    E/AndroidRuntime( 378): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
    E/AndroidRuntime( 378): at android.os.Handler.<init>(Handler.java:121)
    E/AndroidRuntime( 378): at android.app.Dialog.<init>(Dialog.java:101)
    E/AndroidRuntime( 378): at android.app.AlertDialog.<init>(AlertDialog.ja
    va:63)
    E/AndroidRuntime( 378): at android.app.AlertDialog.<init>(AlertDialog.ja
    va:59)
    E/AndroidRuntime( 378): at android.app.AlertDialog$Builder.create(AlertD
    ialog.java:786)
    E/AndroidRuntime( 378): at mio.package.FirstActivity.avvisaErrore(FirtsActivi ty.java
    :226)
    E/AndroidRuntime( 378): at mio.package.FirstActivity$1.run(FirstActivity.java :116)
    E/AndroidRuntime( 378): at java.util.Timer$TimerImpl.run(Timer.java:289)

    Come posso fare? Grazie in anticipo.

  2.  
  3. #2
    Senior Droid


    Registrato dal
    Feb 2010
    Messaggi
    305

    Ringraziamenti
    4
    Ringraziato 17 volte in 17 Posts
    Predefinito

    Le dialog si creano SOLO facendo override di Activity.onCreateDialog().
    Riporto un pezzo di codice di una mia applicazione:



    Per mostrare una dialog devi chiamare showDialog(int id) con l'id della dialog (ad esempio DIALOG_ERROR). Per chiuderne una chiami dismissDialog(int id) oppure chiami Dialog.dismiss()

  4. #3
    Administrator L'avatar di Andrea


    Registrato dal
    Nov 2008
    Messaggi
    3,368
    Smartphone
    Nexus S, myTouch Slide 4g

    Ringraziamenti
    143
    Ringraziato 880 volte in 323 Posts
    Predefinito

    Non è completamente corretto. Non si possono SOLO creare in quel modo.

    Si puo usare anche Dialog.Builder per creare i dialog e poi chiamare il metodo Dialog.show()

    Twitter @veke87

  5. Il seguente Utente ha ringraziato Andrea per il post:

    eafkuor (26-08-10)

  6. #4
    Baby Droid


    Registrato dal
    Jul 2010
    Messaggi
    28

    Ringraziamenti
    3
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Ok,perfetto.
    Un'altra cosa :P
    Dalla principale (la quale implementa il metodo onCreateDialog) apro altre activity, che la estedono, e quando si verifica un errore mostro la dialog relativa a quell'errore. Ora, mi piacerebbe fare in modo che cliccando sul positiveButton venga riavviata l'activity, mentre cliccando sul negativeButton venga distrutta, ma esattamente l'activity corrente. Come posso fare? Devo passare l'istanza dell'activity o posso farne a meno? Grazie!

  7. #5
    Senior Droid


    Registrato dal
    Feb 2010
    Messaggi
    305

    Ringraziamenti
    4
    Ringraziato 17 volte in 17 Posts
    Predefinito

    Quote Originariamente inviato da Andrea Visualizza il messaggio
    Non è completamente corretto. Non si possono SOLO creare in quel modo.

    Si puo usare anche Dialog.Builder per creare i dialog e poi chiamare il metodo Dialog.show()
    Cavolo questa non la sapevo proprio! Credo si rivelerà utile =D

  8. #6
    Senior Droid


    Registrato dal
    Feb 2010
    Messaggi
    305

    Ringraziamenti
    4
    Ringraziato 17 volte in 17 Posts
    Predefinito

    Quote Originariamente inviato da joaocominho Visualizza il messaggio
    Ok,perfetto.
    Un'altra cosa :P
    Dalla principale (la quale implementa il metodo onCreateDialog) apro altre activity, che la estedono, e quando si verifica un errore mostro la dialog relativa a quell'errore. Ora, mi piacerebbe fare in modo che cliccando sul positiveButton venga riavviata l'activity, mentre cliccando sul negativeButton venga distrutta, ma esattamente l'activity corrente. Come posso fare? Devo passare l'istanza dell'activity o posso farne a meno? Grazie!
    Posso chiederti perché hai fatto due activity dove una estende l'altra?

  9. #7
    Baby Droid


    Registrato dal
    Jul 2010
    Messaggi
    28

    Ringraziamenti
    3
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Quote Originariamente inviato da eafkuor Visualizza il messaggio
    Posso chiederti perché hai fatto due activity dove una estende l'altra?
    Per non dover copiare e incollare ogni volta i metodi della principale. Non sono solo 2 le activity che richiamano quei metodi..

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy