Bild GridView-Innen-Fragment

Ich habe gerade angefangen zu entwickeln, auf der android-Plattform nach der Entwicklung auf iOS. Ich schaute herum und ich kann nicht scheinen, um es herauszufinden.
Ich bin versucht zu haben, eine grid-Ansicht angezeigt, nachdem Sie eine Registerkarte in der Menüleiste ausgewählt wird. Das fragment gebracht wird, in der Ansicht von einem main-Aktivität, die die Kontrolle der tab-Leiste.
Ich denke, das problem könnte etwas zu tun mit der Weitergabe Zusammenhang, aber ich bin mir nicht sicher.

Hier ist mein MainActivity.java. Dies ist, wo das fragment initialisiert wird und an der Aktivität. Es funktioniert ohne den code in das fragment.

if (mFragment == null){
            mFragment = Fragment.instantiate(mActivity, mClass.getName());
            ft.add(android.R.id.content,mFragment,mTag);
        } else {
            ft.attach(mFragment);
        }

Hier ist meine PhotosFragment.java Dies ist, wo ich will und der grid-Ansicht aufgefüllt werden und angezeigt werden.

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);
    }   
}

Hier ist mein PhotoImageAdapter.java Klasse. Dies ist, wo die Bilder Hinzugefügt werden, um die adapter, die ich denke.

  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
    };
}

Und hier ist mein photos_layout enthält das gridview-Steuerelement mit der 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>

BEARBEITEN

Hier ist der log-Bericht, wenn er abstürzt

    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

Stürzt die Anwendung ab, wenn Sie klicken Sie auf die Registerkarte und das fragment wird initialisiert.
Das tutorial habe ich mich am android-Entwickler Website.

Jede Hilfe oder Erklärungen wäre erstaunlich. Wie ich schon sagte, ich bin neu in diesem, so wäre es toll, ein paar Tipps um mir zu helfen zu verstehen, was Los ist.

Disco

  • Sie fehlen ft.commit() nach ft.add().
  • Und auch Sie müssen onCreateView-Methode im fragment - sollten Sie dies Lesen:developer.android.com/guide/topics/fundamentals/fragments.html
  • Ok danke für diese Vorschläge, aber ich bin immer noch schlagen das problem an dieser Stelle gridview.setAdapter(new PhotoImageAdapter(dies.getActivity()));
  • Könnten Sie ein log mit diesem Fehler?
  • Ich habe bearbeitet Sie meine Frage mit der log. Es ist wohl wirklich einfacher, ich bin einfach nur versuchen, um meinen Kopf Runde alles. @ania, wenn ich fügte hinzu, die ft.commit(); die Anwendung einfach abgestürzt.
  • Sie haben NPE in die Erstellung von adapter.? Ich weiß nicht, wie diese Zeile: GridView gridview = (GridView) diese.getActivity().findViewById(R. id.photogridview); Besser versuchen: GridView gridview = (GridView) inflater.inflate(R. layout.myGridView, container); in der onCreateView-Methode.
  • Ihr tutorial ist nicht über Fragmente. Check-fragment Dokumentation, da Sie diese Ansicht in die falsche Richtung.
  • Danke @ania. Ich ging zurück über das, was ich getan hatte, und habe es funktioniert. Es hilft, wenn Sie verstehen ein bisschen etwas!

InformationsquelleAutor StuStirling | 2012-05-29
Schreibe einen Kommentar