CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: gianpassa con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 10 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 34 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 9 su 9
Discussione:

Problema con i Toast quando ruoto lo schermo

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Androidiano


    Registrato dal
    Apr 2011
    Località
    Bologna
    Messaggi
    239
    Smartphone
    Huawei Ascend Y300

    Ringraziamenti
    9
    Ringraziato 95 volte in 36 Posts
    Post

    Problema con i Toast quando ruoto lo schermo

    Salve, sto da poco scrivendo la mia prima applicazione per android. All'inizio avevo finito di scrivere il codice java ed il layout per la mia applicazione con tutti i toast funzionanti, ma quando mettevo lo schermo in landscape le icone erano tutte in posizioni sbagliate, così ho capito che dovevo fare un layout anche per il landscape. Fatto anche il nuovo layout imposto il codice java affinchè facesse partire l'applicazione a seconda se il telefono fosse in portrait o landscape, funziona tutto ma l'unico problema ora sono i toast; appena avvio l'app, sia in landscape che in portrait, i toast appaiono ma quando ruoto lo schermo, anche se clicco e riclicco, i toast non appaiono più, nemmeno se ritorno alla visualizzazione iniziale. Il codice del layout per landscape e portrait è lo stesso, cambiano solo delle distanze tra imagebutton.








    Grazie a chiunque sarà di aiuto.

  2.  
  3. #2
    Androidiano L'avatar di Jordano


    Registrato dal
    Nov 2010
    Località
    Reggio Emilia
    Messaggi
    263
    Smartphone
    Nexus S / HTC Magic 32a

    Ringraziamenti
    1
    Ringraziato 48 volte in 46 Posts
    Predefinito

    ti consiglio di sfruttare la struttura a directory delle risorse nativa di android, in modo che android vada a pescare da solo il main.xml nella cartella layout-land/ quando il device è in landscape mode. così ti eviti tutto quel codice (che tra l'altro secondo me non è neanche del tutto in tuo controllo visto che fai la stessa operazione di inflate sia in onconfigurationchanged che in oncreate, che viene anche lui chiamato in caso di cambiamento della orientation, in quanto l'activity viene distrutta e ricreata)

    comunque tornando al post:

    nei 2 layout hai per caso dato id differenti agli stessi bottoni corrispondenti nei 2 layout?

  4. #3
    Administrator L'avatar di Andrea


    Registrato dal
    Nov 2008
    Messaggi
    3,368
    Smartphone
    Nexus S, myTouch Slide 4g

    Ringraziamenti
    143
    Ringraziato 880 volte in 323 Posts
    Predefinito

    Quote Originariamente inviato da Jordano
    ti consiglio di sfruttare la struttura a directory delle risorse nativa di android, in modo che android vada a pescare da solo il main.xml nella cartella layout-land/ quando il device è in landscape mode. così ti eviti tutto quel codice (che tra l'altro secondo me non è neanche del tutto in tuo controllo visto che fai la stessa operazione di inflate sia in onconfigurationchanged che in oncreate, che viene anche lui chiamato in caso di cambiamento della orientation, in quanto l'activity viene distrutta e ricreata)

    comunque tornando al post:

    nei 2 layout hai per caso dato id differenti agli stessi bottoni corrispondenti nei 2 layout?

    Quoto... fa tutto il lavoro android perche complicarsi la vita?


    Inviato dal mio HTC Vision usando Androidiani App

    Twitter @veke87

  5. #4
    Androidiano


    Registrato dal
    Apr 2011
    Località
    Bologna
    Messaggi
    239
    Smartphone
    Huawei Ascend Y300

    Ringraziamenti
    9
    Ringraziato 95 volte in 36 Posts
    Predefinito

    I due file xml per landscape e portrait sono identici, cambiano solo le distanze tra i vari imagebutton, gli id sono uguali. Avevo già provato a mettere i file xml del landscape nella cartella layout-land ma senza risultati positivi per quanto riguarda la grafica, perchè quando andava in landscape mi visualizzava la grafica del portrait, forse dovevo inserire qualcosa nel codice java ma non credo. Se non inserisco nel codice java, all'inizio di oncreate, quel codice che ho messo succede la stessa cosa che mi succede con la cartella layout-land, ovvero si vede in modalità portrait anche in landscape. Per ora quello è l'unico modo che ho trovato per poter visualizzare correttamente le immagini sia in portrait che in landscape. Il mio problema è che una volta ruotato lo schermo i toast non appaiono più una volta cliccato gli imagebutton, mentre se non ruoto lo schermo i toast funzionano. Proverò di nuovo a mettere la cartella layout-land ma se non dovesse funzionare?

  6. #5
    Androidiano L'avatar di Jordano


    Registrato dal
    Nov 2010
    Località
    Reggio Emilia
    Messaggi
    263
    Smartphone
    Nexus S / HTC Magic 32a

    Ringraziamenti
    1
    Ringraziato 48 volte in 46 Posts
    Predefinito

    evidentemente sbagli qualcosa, perchè non è necessario fare tutta quella fatica, vedi screenshots che ci sono 2 layout uno per potrait e uno per il landscape.

    ti linko un archivio con il codice di quella app farlocca, sempre se ci vuoi dare un occhio

    http://dl.dropbox.com/u/19990890/examples/Layouts.zip
    Immagini allegate

  7. #6
    Androidiano


    Registrato dal
    Apr 2011
    Località
    Bologna
    Messaggi
    239
    Smartphone
    Huawei Ascend Y300

    Ringraziamenti
    9
    Ringraziato 95 volte in 36 Posts
    Predefinito

    Ho visto il codice che mi hai consigliato, il mio problema però è che ho un'immagine di sfondo e gli imagebutton devono stare dentro questo sfondo in maniera "ordinata". Ho provato a mettere lo stesso file xml sia nella cartella layout che in layout-land, solo che quando lo schermo è in landscape gli imagebutton sono alla stessa distanza di come sono in portrait, e tu sai che in landscape lo schermo è più largo quindi vorrei che gli imagebutton prendessero più spazio possibile. Ho anche cancellato il codice java in più una volta messo il file xml nel layout-land.

  8. #7
    Androidiano L'avatar di Jordano


    Registrato dal
    Nov 2010
    Località
    Reggio Emilia
    Messaggi
    263
    Smartphone
    Nexus S / HTC Magic 32a

    Ringraziamenti
    1
    Ringraziato 48 volte in 46 Posts
    Predefinito

    se copi il main_landscape.xml in layout-land e lo rinomini in main.xml (in modo da avere layout/main.xml e layout-land/main.xml) e fai setContentView(R.layout.main) in onCreate ci pensa android a sceglierti il layout tra quello portrait e quello landscape, anche se fossero tra loro totalmente diversi.

    Il mio esempio che ti ho incollato è molto semplicistico, ma era per farti vedere che i toast funzionano e che se riesci a fare le cose secondo le pratiche consigliate per sviluppare su Android fai molta meno fatica.

    Da quello che hai scritto mi sembra di aver capito che tu hai copiato il layout del portrait in layout-land, quello con le distanze calcolate per il portrait. Beh android non ti aggiusterà le distanze automaticamente solamente perchè lo copi in layout-land, ma devi mettere un layout adeguato per il landscape. Android gestisce solamente la scelta in base a come è orientato il device.

  9. #8
    Androidiano


    Registrato dal
    Apr 2011
    Località
    Bologna
    Messaggi
    239
    Smartphone
    Huawei Ascend Y300

    Ringraziamenti
    9
    Ringraziato 95 volte in 36 Posts
    Predefinito

    Ehm... errore mio. Quello che non avevo detto, perchè non mi sembrava molto rilevante, era che avevo modificato anche il file manifest, avevo aggiunto
    android:screenOrientation="sensor"
    android:configChanges="orientation|keyboardHidden"

    Ho voluto fare una prova senza questo codice nel manifest ed effettivamente funziona. Il problema era di facile soluzione se solo avessi detto tutto

    Grazie mille comunque per l'aiuto.

  10. #9
    Androidiano L'avatar di Jordano


    Registrato dal
    Nov 2010
    Località
    Reggio Emilia
    Messaggi
    263
    Smartphone
    Nexus S / HTC Magic 32a

    Ringraziamenti
    1
    Ringraziato 48 volte in 46 Posts
    Predefinito

    ok, con quegli attributi hai detto ad Android che eri tu a prenderti carico del cambio di orientation intervenendo sul tuo layout, per quello non andava del tutto.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy