Italian C'è modulo e modulo

Vasmar

Member
Licensed User
Buonasera,
sto diventando matto a cercare di lanciare un modulo. Avevo un'app funzionante e ho deciso di implementarla con una funzione di gestione parametri (scelta lingua, colore sfondo, etc). Ho quindi inserito un modulo tipo Class/B4xPages che richiamo da un modulo tipo Codice. Io lo chiamo ma lui non risponde.
Mi dà errore se lo chiamo con StartActivity e non riesco a chiamarlo con B4XPages.AddPage.
Prima della implementazione ho usato varie view definite B4XView, quindi dovrei essere in B4X...
Non so più che fare, pareva semplice chiamare un altro modulo che ha il suo layout... 😢
Grazie per eventuali aiuti.
 

LucaMs

Expert
Licensed User
Longtime User
Buonasera,
sto diventando matto a cercare di lanciare un modulo. Avevo un'app funzionante e ho deciso di implementarla con una funzione di gestione parametri (scelta lingua, colore sfondo, etc). Ho quindi inserito un modulo tipo Class/B4xPages che richiamo da un modulo tipo Codice. Io lo chiamo ma lui non risponde.
Mi dà errore se lo chiamo con StartActivity e non riesco a chiamarlo con B4XPages.AddPage.
Prima della implementazione ho usato varie view definite B4XView, quindi dovrei essere in B4X...
Non so più che fare, pareva semplice chiamare un altro modulo che ha il suo layout... 😢
Grazie per eventuali aiuti.
'sera.

"Ostregheta", non ho capito un tubo 😂 :confused:

Se non è un problema, per te, allega il progetto oppure una progetto simile, di prova, col minimo indispensabile.

Se crei progetti di tipo B4XPages, NON usare StartActivity e NON aggiungere altre Activity, lascia solo la Main.
 

LucaMs

Expert
Licensed User
Longtime User
"Ostregheta", non ho capito un tubo 😂 :confused:
Beh, non esageriamo, forse qualcosa ho capito.
Forse vuoi presentare all'utente una schermata in cui egli possa impostare dei parametri usati dal progetto ed hai difficoltà nel visualizzarla.

Non dovresti mischiare "normali app", che contengano N Activity (nota da "secchione" che non vuole fare figuracce 😄: so bene che in inglese il plurale è Activties, ma la regola vorrebbe che, se usate in frasi italiane, le parole straniere si scrivano al singolare) e app di tipo B4XPages.

Temo che tu abbia iniziato con un normale progetto, con più Activity, e poi abbia provato ad aggiungere una B4XPage che serva a quello scopo.
Dicci se è così oppure se il tuo sia un progetto B4XPages.
 

Vasmar

Member
Licensed User
Volevo allegare il progetto zippato, ma mi dice che è troppo grande (5,5 mega)
In realtà non ho capito bene come partire direttamente in B4X, quindi non so bene come sono partito, all'inizio ne sapevo ancora meno che adesso.
Però con view (button) definite B4XView funzionava...
 

LucaMs

Expert
Licensed User
Longtime User
Volevo allegare il progetto zippato, ma mi dice che è troppo grande (5,5 mega)
In realtà non ho capito bene come partire direttamente in B4X, quindi non so bene come sono partito, all'inizio ne sapevo ancora meno che adesso.
E' che non hai le idee chiarissime e capisco la confusione.

"B4X" in un certo senso non esiste. Esistono le versioni, simili tra loro, dei linguaggi B4A, B4J, B4I. Con B4X si intende il tentare di scrivere codice che sia compatibile in tutti e 3 quei casi.

B4XPages non significa B4X. I progetti di tipo B4XPages, in B4A, li crei, fin dall'inizio, da zero, da questa voce di menu:

1755464451963.png


Verrà creato il minimo necessario per un progetto B4A-B4XPages (è un modello-template di progetto), mentre se scegli la voce di menu "Default" sarà un progetto "classico" B4A.

Ecco, mentre sto scrivendo è arrivato il tuo post, col progetto, quindi abbandono questo post e provo a scaricare il progetto.
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
Guardando il Main, si capisce bene che hai creato un progetto di tipo B4XPages (nell'ambiente-linguaggio B4A) ed hai fatto la scelta giusta.

Guardo il resto del progetto, per capire il problema...

ecco l'errore:

B4X:
public Sub Applica
    '  PROVVISORIO
'
    Dim mainPage As B4XMainPage = B4XPages.GetPage("MainPage")

Devi creare una pagina per le impostazioni e mostrare quella, che niente a che fare con la pagina principale, B4XMainPage.
Come si fa?

1. Si crea una nuova B4XPage (nota: queste pagine sono semplicemente classi)

1755464999029.png


Poniamo che tu l'abbia chiamata "clspagParametri" (come piace fare a me, con quel prefisso "clspag", che ovviamente non è obbligatorio).
Poi, nella Class_Globals della B4XMainPage devi dichiarare una variabile-oggetto di quel tipo:

B4X:
 Sub Class_Globals
 Public pagParametri As clspagParametri 'nomi sempre di tua scelta

Nella B4XPage_Created della B4XMainPage:
B4X:
Private Sub B4XPage_Created (Root1 As B4XView)'
'
'
'Inizializzazione della variabile-oggetto.
pagParametri.Initialize
'Aggiungi la nuova pagina alla lista di pagine esistenti:
B4XPages.AddPage("pagParametri", pagParametri) ' il parametro "pagParametri" sarà l'ID legato a quella pagina - anche questo, puoi chiamarlo come vuoi

A questo punto, da dovunque, quindi anche dai tuoi moduli di codice, puoi mostrare quella pagina:
B4X:
B4XPages.ShowPage("pagParametri")

ma puoi anche accedere a tutte le variabili e Sub pubbliche di pagParametri, questo è uno dei modi:
B4X:
B4XPages.MainPage.pagParametri.FaiQualcosa ' <--- FaiQualcosa è una Sub pubblica di pagParametri, ovviamente inventata qui.
 
Last edited:

Vasmar

Member
Licensed User
Perfetto!:)
Problema risolto, finalmente va in errore il codice del nuovo modulo ;)
Grazie.

Poi se, a tempo perso, volessi continuare il post interrotto, sarei felice
 

LucaMs

Expert
Licensed User
Longtime User
Poi se, a tempo perso, volessi continuare il post interrotto, sarei felice
Ho tanto di quel tempo perso... quasi tutta l'intera vita passata 😄 :confused:

Perfetto!:)
Problema risolto, finalmente va in errore il codice del nuovo modulo ;)
Spero significhi:
"Ok, adesso riesco a visualizzare la pagina per i parametri, anche se contiene errori".
 

Vasmar

Member
Licensed User
Spero significhi:
"Ok, adesso riesco a visualizzare la pagina per i parametri, anche se contiene errori".
Sì, sì, esattamente. Lancio la nuova pagina, ma parte e va subito in errore (in realtà è ancora quasi tutta da scrivere)
Grazie
 
Last edited:
Top