Autore Topic: Problema con i Toast quando ruoto lo schermo  (Letto 766 volte)

Offline Carontes

  • Nuovo arrivato
  • *
  • Post: 40
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ideos u8150
Problema con i Toast quando ruoto lo schermo
« il: 13 Aprile 2011, 01:51:34 CEST »
0
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.

Codice (XML): [Seleziona]
   1. <?xml version="1.0" encoding="utf-8"?>  
   2. <ScrollView android:id="@+id/ScrollView01"  
  3. android:layout_width="fill_parent"  
  4. android:layout_height="fill_parent"  
  5. xmlns:android="http://schemas.android.com/apk/res/android"  
  6. android:visibility="visible"  
  7. android:saveEnabled="true"  
  8. android:scrollbars="none">  
   9. <LinearLayout android:scrollbarAlwaysDrawVerticalTrack="true"  
 10. android:fadeScrollbars="true"  
 11. android:scrollbars="vertical"  
 12. android:saveEnabled="true"  
 13. android:layout_width="fill_parent"  
 14. android:layout_height="fill_parent"  
 15. android:orientation="vertical"  
 16. android:id="@+id/instructions_view" android:background="@drawable/sfondo" android:fitsSystemWindows="true">  
  17.     <LinearLayout android:layout_height="83dip"  
 18.     android:layout_marginBottom="30dip"  
 19.     android:layout_width="fill_parent"  
 20.     android:id="@+id/linearLayout1" android:layout_marginTop="95dip">  
  21.         <ImageButton android:layout_height="fill_parent"  
 22.         android:id="@+id/imageButton1"  
 23.         android:layout_width="wrap_content"  
 24.         android:background="@drawable/longdrinks"  
 25.         android:clickable="true" android:layout_marginLeft="19dip"></ImageButton>  
  26.         <ImageButton android:layout_height="fill_parent"  
 27.         android:id="@+id/imageButton2"  
 28.         android:layout_width="wrap_content"  
 29.         android:background="@drawable/nalcoholicdrinks"  
 30.         android:clickable="true" android:layout_marginLeft="30dip"></ImageButton>  
  31.         <ImageButton android:layout_height="fill_parent"  
 32.         android:id="@+id/imageButton3"  
 33.         android:layout_width="wrap_content"  
 34.         android:background="@drawable/frozendrinks"  
 35.         android:clickable="true" android:layout_marginLeft="30dip"></ImageButton>  
  36.     </LinearLayout>  
  37.     <LinearLayout android:layout_height="83dip"  
 38.     android:layout_marginBottom="30dip"  
 39.     android:layout_width="fill_parent"  
 40.     android:id="@+id/linearLayout2">  
  41.         <ImageButton android:layout_height="fill_parent"  
 42.         android:layout_marginBottom="2dip"  
 43.         android:id="@+id/imageButton4"  
 44.         android:layout_width="wrap_content"  
 45.         android:background="@drawable/nfrozendrinks"  
 46.         android:clickable="true" android:layout_marginLeft="49dip"></ImageButton>  
  47.         <ImageButton android:layout_height="fill_parent"  
 48.         android:id="@+id/imageButton5"  
 49.         android:layout_width="wrap_content"  
 50.         android:background="@drawable/energydrinks"  
 51.         android:clickable="true" android:layout_marginLeft="50dip"></ImageButton>  
  52.         <ImageButton android:layout_height="fill_parent"  
 53.         android:id="@+id/imageButton6"  
 54.         android:layout_width="wrap_content"  
 55.         android:background="@drawable/sparkling"  
 56.         android:clickable="true" android:layout_marginLeft="40dip"></ImageButton>  
  57.     </LinearLayout>  
  58.     <LinearLayout android:layout_height="83dip"  
 59.     android:layout_width="fill_parent"  
 60.     android:id="@+id/linearLayout3" android:layout_marginBottom="10dip">  
  61.         <ImageButton android:layout_height="fill_parent"  
 62.         android:id="@+id/imageButton7"  
 63.         android:layout_width="wrap_content"  
 64.         android:background="@drawable/hotdrinks"  
 65.         android:clickable="true" android:layout_marginLeft="33dip"></ImageButton>  
  66.         <ImageButton android:layout_height="100dip"  
 67.         android:id="@+id/imageButton8"  
 68.         android:layout_width="wrap_content"  
 69.         android:background="@drawable/punches"  
 70.         android:clickable="true" android:layout_marginLeft="50dip"></ImageButton>  
  71.         <ImageButton android:layout_height="97dip"  
 72.         android:id="@+id/imageButton9"  
 73.         android:layout_width="wrap_content"  
 74.         android:background="@drawable/vegetabledrinks"  
 75.         android:clickable="true" android:layout_marginLeft="28dip"></ImageButton>  
  76.     </LinearLayout>  
  77. </LinearLayout>  
  78. </ScrollView>  



Codice (Java): [Seleziona]
   1. package it.caronte.bar;  
   2.  
   3.  
   4.  
   5.  
   6.  
   7. import android.app.Activity;  
   8. import android.content.res.*;  
   9. import android.os.Bundle;  
  10. import android.view.*;  
  11. import android.widget.*;  
  12.  
  13.  
  14.  
  15.  
  16. public class BartendersActivity extends Activity {  
  17.  
  18.  
  19.  
  20.     /** Called when the activity is first created. */  
  21.      
  22.     @Override  
  23.     public void onCreate(Bundle savedInstanceState) {  
  24.             super.onCreate(savedInstanceState);  
  25.             Configuration c = getResources().getConfiguration();  
  26.             if(c.orientation == Configuration.ORIENTATION_PORTRAIT ) {  
  27.             setContentView(R.layout.main);  
  28.             }  
  29.             else if(c.orientation == Configuration.ORIENTATION_LANDSCAPE ){  
  30.             setContentView(R.layout.main_landscape);}  
  31.             }  
  32.      
  33.     @Override    
  34.     public void onConfigurationChanged(Configuration newConfig){  
  35.         super.onConfigurationChanged(newConfig);      
  36.         Configuration c = getResources().getConfiguration();  
  37.         if(c.orientation == Configuration.ORIENTATION_PORTRAIT ) {  
  38.         setContentView(R.layout.main);  
  39.         }  
  40.         else if(c.orientation == Configuration.ORIENTATION_LANDSCAPE ){  
  41.         setContentView(R.layout.main_landscape);  
  42.         }  
  43.  
  44. }  
  45.      
  46.  
  47.     private ImageButton imageButton1;  
  48.     private ImageButton imageButton2;  
  49.     private ImageButton imageButton3;  
  50.     private ImageButton imageButton4;  
  51.     private ImageButton imageButton5;  
  52.     private ImageButton imageButton6;  
  53.     private ImageButton imageButton7;  
  54.     private ImageButton imageButton8;  
  55.     private ImageButton imageButton9;  
  56.              
  57.      
  58.      
  59.      
  60.      
  61.      
  62.     @Override  
  63.     protected void onStart() {  
  64.         super.onStart();  
  65.  
  66.         imageButton1 = (ImageButton)findViewById(R.id.imageButton1);  
  67.         imageButton2 = (ImageButton)findViewById(R.id.imageButton2);  
  68.         imageButton3 = (ImageButton)findViewById(R.id.imageButton3);  
  69.         imageButton4 = (ImageButton)findViewById(R.id.imageButton4);  
  70.         imageButton5 = (ImageButton)findViewById(R.id.imageButton5);  
  71.         imageButton6 = (ImageButton)findViewById(R.id.imageButton6);  
  72.         imageButton7 = (ImageButton)findViewById(R.id.imageButton7);  
  73.         imageButton8 = (ImageButton)findViewById(R.id.imageButton8);  
  74.         imageButton9 = (ImageButton)findViewById(R.id.imageButton9);  
  75.  
  76.         //Creo i Toast  
  77.         imageButton1.setOnClickListener(new View.OnClickListener() {  
  78.             public void onClick (View view) {  
  79.                 Toast.makeText(getApplicationContext(),  
  80.                         "COCKTAILS & LONG DRINKS",  
  81.                         Toast.LENGTH_SHORT).show();  
  82.             }  
  83.         });  
  84.         // Stesso codice per gli altri imagebutton  
  85.              
  86.             }  
  87.         });  
  88.     }  
  89.         //Creo il menu con un submenu  
  90.         @Override  
  91.         public boolean onCreateOptionsMenu(Menu menu) {  
  92.             super.onCreateOptionsMenu(menu);  
  93.             SubMenu sub = menu.addSubMenu(0,1,0, "Cerca"). setIcon(R.drawable.cerca);  
  94.             sub.add(0,11,0,"Per ingredienti");  
  95.             sub.add(0,12,0,"Per cocktail");  
  96.             return true;  
  97.         }    
  98. }  
  99.          





Grazie a chiunque sarà di aiuto.

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Problema con i Toast quando ruoto lo schermo
« Risposta #1 il: 13 Aprile 2011, 09:51:51 CEST »
0
i layout li hai messi tutti e due in layout/ o hai fatto layout-landscape/ e layout-portrait/ ?
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Problema con i Toast quando ruoto lo schermo
« Risposta #2 il: 13 Aprile 2011, 09:54:19 CEST »
0
Se metti due file chiamati main.xml, uno all'interno di layout e l'altro all'interno di layout-land non hai bisogno di gestire via codice java il tipo di layout, ma ci penserà android.
Sono sicuro che in questo modo risolverai anche il problema legato ai Toast.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Problema con i Toast quando ruoto lo schermo
« Risposta #3 il: 13 Aprile 2011, 11:37:34 CEST »
0
Comunque se gestisci i layout in maniera appropriata (ovvero senza impostare le dimensioni manualmente) di solito non serve neanche crearti due layout diversi.

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Problema con i Toast quando ruoto lo schermo
« Risposta #4 il: 13 Aprile 2011, 12:04:08 CEST »
0
io ho trovato problemi con gli appwidget, in tal senso, perché c'è una differenza di risoluzione, quindi in alcuni casi bisogna "risposizionare" gli elementi.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline Carontes

  • Nuovo arrivato
  • *
  • Post: 40
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ideos u8150
Re:Problema con i Toast quando ruoto lo schermo
« Risposta #5 il: 13 Aprile 2011, 14:28:47 CEST »
0
Ah ma quindi bisogna mettere lo stesso file xml, che si utilizza per il portrait, nella cartella layout-land e android fa tutto da solo? Io avevo messo il file xml modificato per il landscape nella cartella layout-land ma non funzionava come volevo io, per questo ho scritto poi quel codice java che impostasse il layout a seconda di come si trovava lo schermo. Quindi devo mettere il file xml portrait nella cartella layout-land e posso anche cancellare quel codice java in più? Grazie.

Offline Carontes

  • Nuovo arrivato
  • *
  • Post: 40
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ideos u8150
Re:Problema con i Toast quando ruoto lo schermo
« Risposta #6 il: 13 Aprile 2011, 17:39:34 CEST »
0
Ho risolto modificando il file xml in modo da visualizzarlo bene in landscape, poi l'ho messo nella cartella layout-land, ho cancellato il codice java in più ed ho anche cancellato del codice che avevo aggiunto nel file manifest (cosa che non dovevo toccare). Grazie a tutti per l'aiuto.