2010-10-25 10 views
0

J'essaie d'utiliser gonfler en utilisant ViewFlipper pour accéder aux données à l'intérieur de ma vue. J'ai fait un exemple de projet qui se bloque.ViewFlipper se bloque après changement d'orientation

main.xml

<?xml version="1.0" encoding="utf-8"?> 
<ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/RelativeLayout" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

FlipViewBug.java

package android.FlipViewBug; 

import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
public class FlipViewBug extends Activity { 

    private static LayoutInflater inflater = null; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 
} 

Lorsque je faire tourner l'émulateur de l'horizontale à une orientation verticale CTRL + F11 application plante avec arrêté de façon inattendue.

Si je supprime la ligne

inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

application fonctionne très bien. Est-ce que j'essaie de faire quelque chose de mal? Dans mon application, j'ai plus complexe LinnarView que ViewFlipper est imbriqué et les résultats sont les mêmes.

Je vérifiais cela sur android 1.5, 2.2 et galaxy tab. Il n'y a pas de problème lors de la rotation de la vue verticale à horizontale.

Répondre

0

En règle générale, si vous stockez des objectrefs d'interface utilisateur dans des données static, vous faites probablement quelque chose de mal. :) Même lorsque les choses semblent fonctionner, vous risquez de perdre la mémoire jusqu'à ce qu'Android décide de tuer votre processus. Voir Romain Guy's article à ce sujet pour plus de détails.

Donc, fondamentalement, vous avez répondu à votre propre question ... ne faites pas ça! Si vous voulez retarder l'inflation des vues flippées jusqu'à ce qu'elles soient retournées (c'est-à-dire en tant qu'amélioration des performances), je vous suggérerais d'examiner ViewStub.

+0

Activité vide avec ViewFlipper et aucun code source ne se bloque après deux changements d'orientation de l'écran. Vérifiez http://stackoverflow.com/questions/5869153/application-crashes-after-screen-orientation-changed – Spook

Questions connexes