Autore Topic: Custom Dialog con Ritorno di Risposta  (Letto 1037 volte)

Offline AleoxFalco

  • Nuovo arrivato
  • *
  • Post: 27
  • Poi ci penso
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    APC 87-50
  • Sistema operativo:
    Windows 7
Custom Dialog con Ritorno di Risposta
« il: 31 Gennaio 2013, 08:51:53 CET »
0
Ciao a tutti.

Sono giorni che cerco su internet qualcuno che ha avuto il mio stesso problema ma con pessimi risultati, posto qui il mio problema.

Ho scritto una classe MyDialog che contiene dentro un oggetto dialog per creare una custom dialog. Il perchè di questa scelta è che ho necessità di richiamare questa custom dialog praticamente ovunque nel mio progetto. Essa è costituita da un titolo, una text box, una 40ina di pulsanti e 2 tasti conferma. La piattaforma su cui sto sviluppando non supporta in nessun modo la tastiera di input classica di ogni tablet android quindi me ne sto creando una appositamente per me. Nulla di più semplice ( ho pensato 3 giorni fa ). Da bravo programmatore vb 6/net che sono creo l'equivalente di uno showmessage customizzato, inserisco pulsanti, scrivo quello che devo scrivere e alla fine con il tasto conferma ritorno un valore di tipo stringa ad una variabile interna dell'activity padre. Ho fatto tutto tranne questo ultimo punto. Non riesco a capire la logica che c'è dietro ciò. Come faccio a restituire un valore all'activity precedente?
Nel mio progetto già utilizzo semplici alert dialog, setto il pulsante positivo, negativo e con un listener gestisco l'evento. Ma l'evento è dentro all'activity_main in questione, questa volta l'evento è su un altra classe.

Non trovo nulla e mi sento molto demoralizzato.... se qualcuno può aiutarmi e per caso passasse a roma gli offro un caffè :D

Offline AleoxFalco

  • Nuovo arrivato
  • *
  • Post: 27
  • Poi ci penso
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    APC 87-50
  • Sistema operativo:
    Windows 7
Re:Custom Dialog con Ritorno di Risposta
« Risposta #1 il: 31 Gennaio 2013, 11:58:11 CET »
0
Ho cambiato strada. Dopo altre ore di ricerca ho capito che non è possibile far ciò.

http://stackoverflow.com/questions/2028697/dialogs-alertdialogs-how-to-block-execution-while-dialog-is-up-net-style

In parole povere non è possibile con android ( a meno di un grande lavoro di riscrittura ) effettuare un Dialog sincronizzato stile Visual Basic. Bloccare l'activity aspettando che il dialog gli invia i dati equivale a bloccare lo stesso dialog. Dialog e Activity sono relazionate troppo a fondo e la struttura di Android non permette di fare un lavoro pulito. Suggeriscono di chiamare un activity e al massimo "visualizzarla a mo di dialog".

E così ho fatto, aiutato da quest'altro link ( a tal proposito la documentazione è fin troppo semplice :D )
http://www.androidiani.com/forum/programmazione-e-hint-avanzati/136764-problema-interazione-tra-due-activity-usando-intent.html

nella dichiarazione dell'activity nell'android manifest ho scritto anche questa riga

Codice (XML): [Seleziona]
android:theme="@android:style/Theme.Dialog"
permette una grafica uguale al dialog, con visualizzazione non a schermo completa, perfetta per la mia esigenza :)


Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:Custom Dialog con Ritorno di Risposta
« Risposta #2 il: 31 Gennaio 2013, 16:09:39 CET »
0
Questo non è un problema che riguarda strettamente Android ma riguarda la programmazione delle non-blocking GUI.

Si usano le callback, in Java possono essere facilmente implementate attraverso una opportuna interfaccia e un listener.

La documentazione ufficiale spiega il meccanismo. L'implementazione basta copiarla da qualche sorgente:

Input Events | Android Developers
http://androidxref.com/4.2_r1/xref/frameworks/base/core/java/android/view/View.java#setOnClickListener

Sotto Android il thead principale non deve essere MAI bloccato, è scritto chiaramente nella documentazione:

Android Application Framework FAQ | Android Developers

se si usano paradigmi non compatibili al design della UI di Android presenti in altri linguaggi o ambienti in generale si sbaglia e si perde tanto tempo.
adb logcat | tee /tmp/logcat | grep TAG