2010-08-02 12 views
0

J'essaye de configurer un ViewFlipper qui change un contenu de SlidingDrawers chaque fois qu'un bouton est pressé. Jusqu'à présent, toutes les vues que j'ai configurées fonctionnaient bien, mais maintenant j'essaie de créer un ListView (y compris single_choice_mode) dans une vue enfant de ViewFlipper, mais ma tentative ne fait que passer à une exception NullPointerException. Comme je n'ai découvert que ViewFlipper aujourd'hui, je ne le connais pas encore et je ne l'ai peut-être pas compris ... si quelqu'un pouvait me donner un coup de main et m'aider à découvrir ce que j'avais fait de mal, ce serait génial.Comment remplir une vue enfant ViewFlipper avec un ListView?

Merci d'avance.


Voici ce que je l'ai fait:

Le code pour l'événement onClick des ImageButtons:

public void onClick(View v) { 
    if (v == btnExposure) { 

     mFlipper.setDisplayedChild(0); 

    } else if (v == btnProperties) { 
     mFlipper.setDisplayedChild(1); 
    } else if (v == btnSpecialEffects) { 
     mFlipper.setDisplayedChild(2); 
     String[] specialEffects = getResources().getStringArray(R.array.special_effects_array); 
     lv.setAdapter(new ArrayAdapter <String> (this, R.layout.specialeffectsview, specialEffects)); 
     lv.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 
    } 

} 

Le code XML du ViewFlipper dans mon principal fichier xml:

<ViewFlipper 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/flipper" 
    android:layout_toRightOf="@id/button_exposure"> 
    <include android:id="@+id/view_exposure" layout="@layout/exposureview" /> 
    <include android:id="@+id/view_properties" layout="@layout/propertiesview" /> 
    <include android:id="@+id/view_special_effects" layout="@layout/specialeffectsview"/> 
    </ViewFlipper> 

Le tableau de chaînes dans mon string.xml:

<string-array name="special_effects_array"> 
     <item>None</item> 
     <item>Greyscale</item> 
     <item>Sepia</item> 
     <item>Negative</item> 
     <item>Solarize</item> 
     <item>Polarize</item> 
    </string-array> 

Et enfin le specialeffectsview.xml (le fichier de mise en page pour le ListView):

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

Répondre

0

Comme cela a été discussed on the Android Google Groups when you inquired there, votre NullPointerException est parce que votre variable lv est null. Vous devez faire que ce ne soit pas null, probablement en appelant lv=(ListView)findViewById(R.id.special_effects_list) à un certain point après setContentView().

+0

J'ai déjà essayé cela mais comme cela n'a pas fonctionné, j'ai changé la disposition en un simple LinearLayout avec un groupe RadioButton, pas ma solution idéale et finale, mais pour l'instant cela devrait faire l'affaire ... – kivy