سؤال

I'm using a fragment to show a GridView with some images and a Button to add new Images. The GridView works fine, but my Button's onClick method is never called.

This is my Fragment's onCreateView method:

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.fragment_picture_grid_view, container, false);
    addPictureButton = (Button) rootView.findViewById(R.id.fragment_grid_view_add_button);
    addPictureButton.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            CameraOrAlbumDialogFragment dialogFragment = new CameraOrAlbumDialogFragment();
            dialogFragment.show(mContext.getSupportFragmentManager(), "CameraPicker");
        }
    });

    imageGridView = (GridView) rootView.findViewById(R.id.fragment_grid_view);
    imageGridView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);

}

In my onActivityCreated method I do all the Adapter stuff for my GridView and it works normally, it can capture my clicks and longClicks. The only thing not working is the Button's onCLick method. I can see the Button icon changing when I touch it, but the functions inside my onClickListener method are never called. Any help?

EDIT

This is my fragment layout:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <GridView
        android:id="@+id/fragment_grid_view"
        android:layout_width="match_parent"
        android:layout_height="150dp"
        android:numColumns="auto_fit" >
    </GridView>

    <Button
        android:id="@+id/fragment_grid_view_add_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="Add Picture" />

</LinearLayout>

EDIT2

Turns out that there was another button overlaping my button, so that button was receiving the onClick events instead of my button. I was able to figure it out when I used the Hierarchy view in Eclipse. Very usefull.

هل كانت مفيدة؟

المحلول 2

I figured thet I had another View overlapping my button, that's why it was never called.

SO DUMB! Sorry.

نصائح أخرى

Try this.

public class CarCheckFrameFragment extends Fragment implements View.OnClickListener  {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        View rootView = inflater.inflate(R.layout.fragment_car_check_frame, container, false);

        Button button = rootView.findViewById(R.id.button);
        button.setOnClickListener(this);

        return rootView;
    }

    @Override
    public void onClick(View v) {
        switch(v.getId()) {
            case R.id.button:
                doSomething();
                break;
        }
    }
}

You should use getChildFragmentManager() when using fragments inside other fragments.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top