Italian Passare dati dalla main activity a nuova activity

Wkm01pro

Member
Buongiorno a tutti, premetto che sono nuovo del forum ma soprattutto nuovo di B4A. Ho bisogno di iniziare dalle basi e quindi volevo chiedervi come si facesse a passare dei dati dalla activity principale (main) ad un nuovo modulo activity (per esempio: "activity1"). Per dati intendo per esempio una stringa "Ciao", e che nella nuova activity una label (editText o quello che serve) prenda al suo interno questa stringa e la scriva a video. Non so se mi sono spiegato bene? Se così non si può, fare in modo che cliccando un pulsante si compili in automatico la Stringa a video all'interno della Label o EditText.
Sul forum ho trovato qualcosa di simile ma robe troppo complicate (come si scrive e si legge un file di testo per esempio) ora come ora vorrei l'esempio più semplice possibile.

Grazie mille a tutti voi.

ps. voi dove l'avete studiato B4A?
 

Lello1964

Well-Known Member
Licensed User
Longtime User
Main Activity:
CallSub2(activity2, "CambioTxt", "Ciao")

Acivity2:
sub CambioTxt (Nuovotesto as string)
    mioEditText.text=Nuovotesto
end sub
 

Wkm01pro

Member
Ciao ho provato e non funziona, non vedo scritto nulla a video, ho provato anche a mettere la CallSub2 fuori ma sicuramente sbaglio qualcos'altro...😅
Main Activity:
Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'These variables can be accessed from all modules.
    Private xui As XUI
 
End Sub

Sub Globals
    'These global variables will be redeclared each time the activity is created.
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("Main")
    CallSub2(Activity2, "CambioTxt", "Ciao")
    
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Activity2:
Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'These variables can be accessed from all modules.

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.
    Public EditText1 As EditText
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")
End Sub

Sub CambioTxt (Nuovotesto As String)
    EditText1.text=Nuovotesto
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub
 

udg

Expert
Licensed User
Longtime User
Visto che stai iniziando, parti direttamente con gli esempi B4XPages.
La sostanza, mooolto, semplificata è che sono pannelli (che rappresentano "pagine") tutti attivi contemporaneamente. Quindi da uno puoi scrivere nelle variabili di un altro.
Nelle activity vecchio-stile questo non è vero. Ad esempio CallSub non serve tra due activity, mentre CallSubDelay mette in coda la richiesta di attivare l'activity destinazione prima di effettuare la chiamata alla sub indicata.
 
Last edited:

udg

Expert
Licensed User
Longtime User
CallSub non può funzionare perchè l'activity ricevente non è attiva.
CallSubDelay sarebbe la strada da seguire perchè questa forma prima attiva l'activity ricevente e poi effettua la chiamata
Un esempio lo trovi qui.

Edit: ti riporto la definizione di CallSub, per maggior chiarezza:
Calls the given sub. CallSub can be used to call a sub which belongs to a different module.
However the sub will only be called if the other module is not paused. In that case an empty string will be returned.
You can use IsPaused to test whether a module is paused.
This means that one activity cannot call a sub of a different activity. As the other activity will be paused for sure.
CallSub allows an activity to call a service sub or a service to call an activity sub.
Note that it is not possible to call subs of code modules.
CallSub can also be used to call subs in the current module. Pass Me as the component in that case.
 

LucaMs

Expert
Licensed User
Longtime User
Ah ok finalmente ho capito! Grazie mille a tutti quanti;)
Sì ma, come ha suggerito @udg, evita di farlo, di creare altre Activity oltre a quella di default, la Main. Crea invece progetti B4XPages, sono molto più semplici da gestire e, con qualche attenzione, funzioneranno su qualunque piattaforma (Android, iOS, Windows, Linux, ...).


Per diventare un utente "ufficiale", quindi per avere vari vantaggi, tra i quali quello non trascurabile di poter vedere i tuoi post pubblicati immediatamente e quindi ottenere risposte velocemente, fai una piccola donazione: https://www.b4x.com/b4a.html
 
Top