Italian Funzioni ...

Star-Dust

Expert
Licensed User
Il concetto di base c'é. Ma il metodo non é corretto. Non é necessario creare un Array di Bottoni.
Le domande che devi porre che tipo di risposta richiedono.. editText? Sono delle Opzioni tipo Si,No,Forse, eccc....?

Le risposte dove le vuoi conservate in un Array?
Un Array di Domande? Un Array di Risposte?
Una Map?
 

Star-Dust

Expert
Licensed User
Ho provato il tuo codice e Ho capito cosa ti serve... Meglio una classe... Ma devo rifarlo daccapo... scusami é troppo incasinato quello che hai scritto tu
 

Roberto Tsolakis

Member
Licensed User
Longtime User
Devo ammettere che non ho mai guardato un Class Module CustomView ... quei metodi Panel, potrebbero essere interessanti

il GetBase, mi permetterebbe di fare un Pannel.
Ci sto provando anch'io a ridarlo ... ad ogni modo siccome farai prima tu ... assimilerò dal tuo progetto :)
 
Last edited:

Star-Dust

Expert
Licensed User
Ti sto creando una classe ma non CustomView perché pe ril momento credo non sapresti modificarla e poi faccio prima.
Una classe che può servire anche a @LucaMs, visto che si tratta in effetti di un Dialogs con Multi Risposta che é quello che vuole realizzare @LucaMs.

Prendo un piccione usando 2 fave... almeno credo:p:p:p:eek::eek::eek::oops::oops::oops:
 

AlpVir

Well-Known Member
Licensed User
Longtime User
@Star-Dust
Avere più attività in una sola App ... deve servire.... Devono essere veramente attività diverse... altrimenti se le usi come fossero pannelli devi impazzire per far comunicare i vari pezzi dell'App.
Forse non ho capito. Secondo me è del tutto improponibile un'app di medio/bassa complessità che non faccia uso di diverse Activity. Io ad esempio utilizzo a volte 2 o 3 Panel aventi dimensioni 100% per ogni activity (e nascondo uno o l'altro a seconda dei casi). In main dichiaro in Sub Process_Globals le variabili che desidero siano condivisibili dalle varie Activity e le richiamo semplicemente con un Main.NomeVariabile. Viceversa nelle varie Activity non dichiaro nulla in Sub Process_Globals, per non fare confusione
Ho poi un modulo (chiamato con molta fantasia Comune.bas) in cui ho sistemato le Sub che desidero siano accessibili dalle varie Activity con un semplice Comune.NomeDellaSub.
C'è per caso qualche modo migliore di operare ?
 

Roberto Tsolakis

Member
Licensed User
Longtime User
Solitamente anch'io utilizzo i pannel ...
Ma in questo caso ho del codice ricorsivo che visualizza degli oggetti e vorrei piazzarlo da qualche parte.
Purtroppo non è possibile chiamare una Sub con MioModulo.Miafunziona in qualcosa che non sia un Code Module ... che non accetta l'utilizzo di Pannel e ScrollView.


Il modulo Comune.bas è un Code Module ?
 
Last edited:

Star-Dust

Expert
Licensed User
Ogni attività deve svolgere un attività completa. Se l'App svolge più attività potrebbe richiedere l'uso di più attività.

I pannelli, le ScrollView, ecc... nascono proprio per avere più viste sulla stessa attività. A volte servono menu, pannelli da compilare eccc....
Un menu multiplo non sono più attività... poi ognuno può realizzarle come vuole le App... se funzionano....

Di preciso non conosco l'App che hai realizzato, e non posso esprimermi ne mi permetterei mai lo stesso, non sono qualificato per farlo e non mi piace esprimere pareri sul lavoro degli altri che magari ci hanno faticato nottate ;)

Poi io sono suscettibile e non voglio giudicato il mio lavoro, quindi non lo faccio con gli altri :p:p
 

Star-Dust

Expert
Licensed User
E' Una classe che gestisce le domande, divise per menu.
Puoi inserire tutte le risposte che vuoi, appena rispondi procede alla successiva.
Ho inserito anche un bottone per tornare indietro nelle precedenti Domande.

Quando finisce sparisce. Ma puoi riavviarlo.
 

Attachments

  • roberto.zip
    9.3 KB · Views: 148

Star-Dust

Expert
Licensed User
Ovviamente puoi modificarlo come ti piace di più , prendi l'idea base.
 

Star-Dust

Expert
Licensed User
Un Solo Panel, un Activity. Menu e voci illimitati.

Questo é il codice del Main
B4X:
Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'These variables can be accessed from all modules.
    Dim MenuMap As Map
End Sub

Sub Globals
    'These global variables will be redeclared each time the activity is created.
    'These variables can only be accessed from this module.
    Dim MioMenu As MultiSelect

    Private PanelMain As Panel
End Sub

Sub Activity_Create(FirstTime As Boolean)
    'Do not forget to load the layout file created with the visual designer. For example:
    Activity.LoadLayout("main")

    MenuMap.Initialize
    
    MioMenu.Initialize("MioMenu")
    MioMenu.AddList("Menu 1",Array As String("Voce 1", "Voce 2" , "Voce 3" , "Voce 4", "Voce 5", "Voce 6"))
    MioMenu.AddList("Menu 2",Array As String("2) Voce 1", "2) Voce 2" , "2) Voce 3" , "2) Voce 4", "2) Voce 5", "2) Voce 6"))
    MioMenu.AddList("Menu 3",Array As String("3) Voce 1", "3) Voce 2" , "3) Voce 3" , "3) Voce 4", "3) Voce 5", "3) Voce 6"))
End Sub

Sub MioMenu_result(M As Map)
    For i=0 To M.Size-1
        Log(M.GetValueAt(i))
    Next

    LogColor(MioMenu.GetResponse("Menu 1"),Colors.Red)
End Sub

Sub ButtonRestart_Click
    MioMenu.RestartMenu
End Sub

Il codice é leggibile e semplice da usare.
Per aggiungere un menu basta aggiungere una sola riga di comando:
B4X:
    MioMenu.AddList("Menu 1",Array As String("Voce 1", "Voce 2" , "Voce 3" , "Voce 4", "Voce 5", "Voce 6"))

Non devi riscrivere chilometri di codice ne aggiungere nuove activity per ogni menu inserito.
Mi sembra una soluzione molto più semplice

Per vedere la risposta di una domanda specifica:
B4X:
LogColor(MioMenu.GetResponse("Menu 1"),Colors.Red)
 

Roberto Tsolakis

Member
Licensed User
Longtime User
mmmmh...

il modulo di classe direi che è molto complicato ...
me lo studierò.

Cmq vedo che c'è parte di codice anche nel MAIN ... e mi sarebbe piaciuto evitare per non sporcarlo

B4X:
Sub MioMenu_result(M As Map)
    For i=0 To M.Size-1
        Log(M.GetValueAt(i))
    Next

Sub MioMenu_result(M As Map)
    For i=0 To M.Size-1
        Log(M.GetValueAt(i))
    Next
  
    LogColor(MioMenu.GetResponse("Menu 1"),Colors.Red)
End Sub

Ho notato il nome di progetto ... Grazie! ;-) Ma il merito è tutto tuo!
 

Star-Dust

Expert
Licensed User
Il codice nel main ti serve per le risposte ma puoi spostarlo in un Modulo.

Il restart potrebbe non serviti.. Vedi tu cosa tenere e cosa togliere.

Non è cosi complicato.. Se usi da molto B4A da come ho capito è giunto il momento di imparare a usarli. o_O
 

LucaMs

Expert
Licensed User
Longtime User
Oh, me so perso tutto il thread (capita molto raramente).

So solo che il titolo parla di funzioni... mo che faccio, me rileggo tutto? Me ce perdo :p.

Peccato perché sono curioso (ma anche pigro, quindi rileggere tutto e magari pure i sorgenti...!).


P.S. beh, leggo, essendo indeciso tra il cenare (sono le 2:10 di notte), programmare o dormire... scelgo la cosa più utile (ehm... boh :p)
 

LucaMs

Expert
Licensed User
Longtime User
Le funzioni che in Android chiamiamo metodi
Beh, indeciso sul da farsi... aumento l'antipatia che prima o poi provoco in tutti :p

Questo non è esatto: metodi sono, in qualunque linguaggio, non si parla di Android, delle routine, solo che se queste routine restituiscono dei valori, allora sono funzioni.
 

LucaMs

Expert
Licensed User
Longtime User
Le funzioni che in Android chiamiamo metodi, si applicano al codice Main , alle classi e ai moduli.
Nel tuo esempio é un modulo di codice.
Il punto è che in b4a chiamiamo moduli i componenti principali, per cui abbiamo:
moduli Activity
moduli di classe
moduli di servizio (traducendo)
moduli di codice.

Si farebbe prima a chiamarli: Activity, classi, servizi (o services) e moduli (questo, in breve, dovrebbe riferirsi quindi ai moduli di codice).

Non mi sono spiegato bene ma fa lo stesso... sono pure le 3 di notte e ancora non ho cenato :p:(
 

Star-Dust

Expert
Licensed User
Beh, indeciso sul da farsi... aumento l'antipatia che prima o poi provoco in tutti :p

Questo non è esatto: metodi sono, in qualunque linguaggio, non si parla di Android, delle routine, solo che se queste routine restituiscono dei valori, allora sono funzioni.
Parlavamo delle Classi (o oeggetti) e ha metodi non funzioni
 

Star-Dust

Expert
Licensed User
Il punto è che in b4a chiamiamo moduli i componenti principali, per cui abbiamo:
moduli Activity
moduli di classe
moduli di servizio (traducendo)
moduli di codice.

Si farebbe prima a chiamarli: Activity, classi, servizi (o services) e moduli (questo, in breve, dovrebbe riferirsi quindi ai moduli di codice).

Non mi sono spiegato bene ma fa lo stesso... sono pure le 3 di notte e ancora non ho cenato :p:(
Per moduli intendevo i Code Module... ho solo abbreviato
 

Star-Dust

Expert
Licensed User
Visto che ho fatto il lavoro ho aggiunto qualche animazione e lo inserisco nella mia Library con tute le mie View ... o meglio in quella dialogs... vedremo

ezgif-1-427ae4e260.gif
 
Top