Dispongo di un'app che gira su Android che dispone di 5 schermate
Supponiamo che su tre di queste ci siano dei command button identici che eseguono funzioni identiche, Exit, View, Print, Quit
Quattro su una, quattro sull'altra, quattro sull'altra, tutti uguali tra loro
Come fare per mantenere un'unica 'barra comandi' ed usarla su tre delle cinque schermate del programma?
Se fossero delle label invece dei command button,cambia qualcosa?
Nei layout di ogni pagina che conterrà quella "barra comandi" metti un Panel (pnlComandi) e ci carichi il layout che contiene i tasti o Label o quello che ti serve.
Si, grazie
Non ho capito bene che differenza tra copiare i button da una schermata e incollarli su un'altra rispetto al tuo consiglio
Per generare gli eventi cui i tasti dovrebbero rispondere, comunque bisogna andare su ogni tasto di ogni form col destro Crea/Click
Poi gli eventi bisogna riempirli del codice opportuno
Tre command button x 3 form = 15 tasti da usare, creare eventi, infarcire di codice
Ma forse ho mal compreso il tuo consiglio
Che significa "copiare i button da una schermata"? Dovresti specificare cosa intendi per "schermata".
Comunque, non c'è da copiare e se parli di Form forse sta parlando di B4J (cosa che comunque non cambierebbe la questione).
In ogni "form" (o Activity o B4XPage) dovrai caricare il tuo layout, no? A meno che (sbagliato) tu non crei tutte le view da codice! Questo layout conterrà anche un Panel da mettere sul fondo, che sarà il tuo "pannello comandi". Nell'Activity_Create (se parli di B4A "normale") metterai:
pnlComandi.LoadLayout("layComandi")
layComandi, creato nel Designer ovviamente, conterrà le View che il pannello dovrà contenere (tasti, Label o quello che vuoi). Non dovrai copiare e incollare alcunché.
E' chiaro che le routine-evento dovrai scriverle, non penso che in ogni Activity le azioni effettuate saranno le stesse, no?
Che significa "copiare i button da una schermata"? Dovresti specificare cosa intendi per "schermata".
Comunque, non c'è da copiare e se parli di Form forse sta parlando di B4J (cosa che comunque non cambierebbe la questione).
In ogni "form" (o Activity o B4XPage) dovrai caricare il tuo layout, no? A meno che (sbagliato) tu non crei tutte le view da codice! Questo layout conterrà anche un Panel da mettere sul fondo, che sarà il tuo "pannello comandi". Nell'Activity_Create (se parli di B4A "normale") metterai:
pnlComandi.LoadLayout("layComandi")
layComandi, creato nel Designer ovviamente, conterrà le View che il pannello dovrà contenere (tasti, Label o quello che vuoi). Non dovrai copiare e incollare alcunché.
E' chiaro che le routine-evento dovrai scriverle, non penso che in ogni Activity le azioni effettuate saranno le stesse, no?
Si, per Form intendo l'Activity o le P4XPage, mi scuso per l'imprecisione
Ogni B4XPage dispone del proprio layout
Quando dici 'questo layout conterra' anche un Panel..." intendi dire che su OGNI layout ci dovro' inserire un Panel coi tasti/label necessarie, giusto?
Se fosse cosi, non e' quello che desidero fare, che e' realizzare UNA volta il pannello comandi ed usarlo poi su diverse B4XPage senza modificarlo
Quando dici 'questo layout conterra' anche un Panel..." intendi dire che su OGNI layout ci dovro' inserire un Panel coi tasti/label necessarie, giusto?
Ora e' perfettamente chiaro
Chissa' come mai non avevo visto l'esempio che hai incluso nel messaggio precedente
Non sapevo si potessero caricare piu' di un layout uno dopo l'altro
Era questo il motivo per cui non comprendevo le tue indicazioni
Molto gentile (e paziente), grazie
Con le B4XPages potresti anche fare differentemente.
Hanno, tra i tanti, il vantaggio di poter passare una View da una pagina all'altra, quindi potresti mettere il Panel nella B4XMainPage, già completa delle sue View, e poi farla apparire nella pagina che viene "aperta" (mostrata), prelevandola dalla B4XMainPage.
Senza che mi metta a sviluppare il progetto, ti basta sapere che se in una pagina, nella Class_Globals dichiari una View (essendo un progetto B4XPages meglio dichiararla come B4XView) come Public, è accessibile da dovunque e quindi puoi spostarla dove vuoi (ovviamente in altre pagine).
La rimuovi dalla pagina "attuale", ad esempio: B4XPages.B4XMainPage.pnlComandi.RemoveFromParent
e l'aggiungi alla pagina corrente: Root.AddView(B4XPages.B4XMainPage.pnlComandi, ....)