2017-07-20 1 views
0

J'ai essayé d'obtenir un tas d'images comme une galerie dans mon fragment de l'élément de la barre de navigation. ici le code va comme ça.Comment ajouter des images dans gridview à l'intérieur du fragment de l'élément de la barre de navigation

public class ImageAdapter extends BaseAdapter { private Context context;

public Integer[] images = { 
     R.drawable.base1, R.drawable.base2, 
     R.drawable.base3, R.drawable.base2, 
     R.drawable.base1, R.drawable.base3, 

}; 

public ImageAdapter(Context c) { 
    context = c; 
} 
@Override 
public int getCount() { 
    return images.length; 
} 

@Override 
public Object getItem(int position) { 
    return images(position); 
} 

private Object images(int position) { 

    return images(position); 
} 


@Override 
public long getItemId(int position) { 
    return 0; 
} 

@Override 
public View getView(int position, View ConvertView, ViewGroup parent) { 
    ImageView imageview = new ImageView(context); 
    imageview.setImageResource(images[position]); 
    imageview.setScaleType(ImageView.ScaleType.CENTER_CROP); 
    imageview.setLayoutParams(new GridView.LayoutParams(240, 240)); 
    return imageview; 
} 

Et dans l'activité principale j'ai mis cette

GridView gridView = (GridView) findViewById(R.id.gridView);

gridView.setAdapter(new ImageAdapter(this));` 

mais chaque fois que je lance mon application i obtenir cette erreur. Voici le logcat

07-20 08: 34: 49,974 4608-4608/com.example.android.navigation D/AndroidRuntime: Arrêt VM 7 au 20 août: 34: 49,975 4608-4608/com .example.android.navigation E/AndroidRuntime: FATAL EXCEPTION: principal Processus: com.example.android.navigation, PID: 4608 java.lang.RuntimeException: Impossible de démarrer l'activité ComponentInfo {com.example.android.navigation/com .example.android.navigation.MainActivity}: java.lang.NullPointerException: Tentative d'invocation de la méthode virtuelle 'void android.widget.GridView.setAdapter (android.widget.ListAdapter)' sur une référence d'objet null at android.app.ActivityThread .performLaunchActivity (ActivitéT hread.java:2416) à android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2476) à android.app.ActivityThread.-wrap11 (ActivityThread.java) à android.app.ActivityThread $ H.handleMessage (ActivityThread .java: 1344) à android.os.Handler.dispatchMessage (Handler.java:102) à android.os.Looper.loop (Looper.java:148) à android.app.ActivityThread.main (ActivityThread.java : 5417) à java.lang.reflect.Method.invoke (méthode native) à com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:726) à co m.android.internal.os.ZygoteInit.main (ZygoteInit.java:616) Causé par: java.lang.NullPointerException: Tentative d'invocation de la méthode virtuelle 'void android.widget.GridView.setAdapter (android.widget.ListAdapter)' sur une référence d'objet null à com.example.android.navigation.MainActivity.onCreate (MainActivity.java:32) at android.app.Activity.performCreate (Activity.java:6237) at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1107) at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2369) à android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2476) à android.app.ActivityThr ead.-wrap11 (ActivityThread.java) à android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1344) à android.os.Handler.dispatchMessage (Handler.java:102) at android.os.Looper .loop (Looper.java:148) at android.app.ActivityThread.main (ActivityThread.java:5417) à java.lang.reflect.Method.invoke (méthode native) à com.android.internal.os. ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:726) à com.android.internal.os.ZygoteInit.main (ZygoteInit.java: 616)

Note: Ne pas confondre avec les images R.drawable.base123. Je viens d'écrire 3 pour le rendre court. J'ai mis 20 images sur mon espace de travail.

+0

Selon pour empiler, votre gridview est null. L'avez-vous défini? –

+0

Si je définis gridview dans le fichier XML principal, les images apparaîtront également dans tous les autres éléments de navigation. Je souhaite que des images différentes apparaissent sur différents éléments, en cliquant sur la barre de navigation. –

Répondre

0

Essayez de déclarer "GRIDVIEW" avant que la méthode onCreate

private GridView mGridView; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.yourLayout); 
    mGridView = (GridView) findViewById(R.id.gridView); 

mGridView.setAdapter(new ImageAdapter(this)); 

}

0

Vérifier onCreate méthode de votre activité, peut-être vous faites référence au fichier R.layout mal

public void onCreate(Bundle savedInstanceState) 
{ 
     super.onCreate(savedInstanceState); 
     // Check this 
     setContentView(R.layout.filters); 
}