Image GridView À L'Intérieur De Fragment
J'ai juste commencé à développer sur la plate-forme android, après le développement sur iOS. J'ai regardé autour et je n'arrive pas à le comprendre.
Je suis en train d'avoir un affichage de la grille apparaissent au bout d'un onglet dans la barre d'action est sélectionnée. Le fragment est introduit dans la vue par une activité principale qui contrôle la barre d'onglet.
Je pense que le problème est peut-être quelque chose à voir avec le passage de contexte, mais je ne suis pas sûr.
Voici mon MainActivity.java. C'est là que le fragment est initialisé et affecté à l'activité. Il fonctionne sans le code dans le fragment.
if (mFragment == null){
mFragment = Fragment.instantiate(mActivity, mClass.getName());
ft.add(android.R.id.content,mFragment,mTag);
} else {
ft.attach(mFragment);
}
Voici mon PhotosFragment.java C'est là que je veux que l'affichage de la grille pour être peuplée et affiché.
public class PhotosFragment extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GridView gridview = (GridView) this.getActivity().findViewById(R.id.photogridview);
gridview.setAdapter(new PhotoImageAdapter(this.getActivity()));
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
}
Voici mon PhotoImageAdapter.java classe. C'est là que les images sont ajoutées à la carte je pense.
public class PhotoImageAdapter extends BaseAdapter {
private Context mContext;
public PhotoImageAdapter(Context c) {
mContext = c;
}
public int getCount() {
return mThumbIds.length;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) { //if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(mThumbIds[position]);
return imageView;
}
private Integer[] mThumbIds = {
R.drawable.sample_2, R.drawable.sample_3,
R.drawable.sample_4, R.drawable.sample_5,
R.drawable.sample_6, R.drawable.sample_7,
R.drawable.sample_0, R.drawable.sample_1,
R.drawable.sample_2, R.drawable.sample_3,
R.drawable.sample_4, R.drawable.sample_5,
R.drawable.sample_6, R.drawable.sample_7,
R.drawable.sample_0, R.drawable.sample_1,
R.drawable.sample_2, R.drawable.sample_3,
R.drawable.sample_4, R.drawable.sample_5,
R.drawable.sample_6, R.drawable.sample_7
};
}
Et voici mon photos_layout qui contient le contrôle gridview avec l'id photogridview.
photos_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/photogridview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnWidth="90dp"
android:numColumns="auto_fit"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:stretchMode="columnWidth"
android:gravity="center">
</GridView>
MODIFIER
Ici est le rapport de journal quand il se bloque
05-29 14:15:43.895: W/dalvikvm(676): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
05-29 14:15:43.925: E/AndroidRuntime(676): FATAL EXCEPTION: main
05-29 14:15:43.925: E/AndroidRuntime(676): java.lang.NullPointerException
05-29 14:15:43.925: E/AndroidRuntime(676): at com.corecoders.PhotosFragment.onCreate(PhotosFragment.java:21)
05-29 14:15:43.925: E/AndroidRuntime(676): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:795)
05-29 14:15:43.925: E/AndroidRuntime(676): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1032)
05-29 14:15:43.925: E/AndroidRuntime(676): at android.app.BackStackRecord.run(BackStackRecord.java:622)
05-29 14:15:43.925: E/AndroidRuntime(676): at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1382)
05-29 14:15:43.925: E/AndroidRuntime(676): at android.app.FragmentManagerImpl$1.run(FragmentManager.java:426)
05-29 14:15:43.925: E/AndroidRuntime(676): at android.os.Handler.handleCallback(Handler.java:605)
05-29 14:15:43.925: E/AndroidRuntime(676): at android.os.Handler.dispatchMessage(Handler.java:92)
05-29 14:15:43.925: E/AndroidRuntime(676): at android.os.Looper.loop(Looper.java:137)
05-29 14:15:43.925: E/AndroidRuntime(676): at android.app.ActivityThread.main(ActivityThread.java:4424)
05-29 14:15:43.925: E/AndroidRuntime(676): at java.lang.reflect.Method.invokeNative(Native Method)
05-29 14:15:43.925: E/AndroidRuntime(676): at java.lang.reflect.Method.invoke(Method.java:511)
05-29 14:15:43.925: E/AndroidRuntime(676): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
05-29 14:15:43.925: E/AndroidRuntime(676): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
05-29 14:15:43.925: E/AndroidRuntime(676): at dalvik.system.NativeStart.main(Native Method)
05-29 14:15:44.494: I/dalvikvm(676): threadid=3: reacting to signal 3
05-29 14:15:44.514: I/dalvikvm(676): Wrote stack traces to '/data/anr/traces.txt'
05-29 14:20:43.995: I/Process(676): Sending signal. PID: 676 SIG: 9
L'application se bloque lorsque vous cliquez sur l'onglet et le fragment est initialisé.
Le tutoriel ci, je suis sur le les développeurs android site.
De l'aide ou des explications serait étonnant. Comme je l'ai dit, je suis nouveau sur ce donc, il serait bon d'avoir quelques conseils pour m'aider à comprendre ce qui se passe.
Disco
Et aussi, vous devez onCreateView méthode du fragment - vous devriez lire ceci:developer.android.com/guide/topics/fundamentals/fragments.html
Ok merci pour ces suggestions, mais je suis toujours frapper le problème à ce point de contrôle gridview.setAdapter(new PhotoImageAdapter(ce.getActivity()));
Pourriez-vous fournir des journaux avec cette erreur?
Votre tutoriel n'est pas sur les Fragments. Vérifier fragment de la documentation parce que vous êtes la création de ce point de vue dans le mauvais sens.
OriginalL'auteur StuStirling | 2012-05-29
Vous devez vous connecter pour publier un commentaire.
Il s'avère que quelques simples modifications à l'original du code et il fonctionne.
Après le débogage et la définition de points d'arrêt, j'ai pu constater que le contexte, dans le PhotoImageAdapter est un pointeur null, et donc, provoquant l'application crash. C'était la façon dont j'ai été l'initialisation de la carte dans mon PhotoFragment et aussi la méthode que j'ai été en cours d'initialisation.
Ci-dessous le code qui fonctionne correctement pour quelqu'un d'autre qui a de la difficulté avec cela.
De nouveau cela pourrait ne pas être le meilleur ou le seul à le faire mais ça a fonctionné pour moi. (PhotoImageAdapter.java avait un changement de nom de MyAdapter.java)
OriginalL'auteur StuStirling
hi chek le code que je viens de le partager, j'ai fait le fragment avec gridview alors j'espère qu'il sera utile pour vous de vérifier ce lien, vous y trouverez plein de détails sur gridview mise en œuvre avec le fragment à la fois de l'appareil et de tablette tous les meilleurs
cochez cette fichiers principalement dans ma réponse, il sera vraiment utile pour u
MasterFragment,MasterGridActivity,MyAdapter,gridview.xml
Comment présenter les Différentes Mises en page à l'intérieur des Fragments
OriginalL'auteur