我正在使用片段来显示带有一些图像的GridView和一个用于添加新图像的按钮。 GridView工作正常,但我的Button的onClick方法永远不会被调用。
这是我的Fragment的onCreateView方法:
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);
}
在我的onActivityCreated方法中,我为我的GridView做了所有的适配器工作,它正常工作,它可以捕获我的点击和longClicks。唯一不起作用的是Button的onCLick方法。当我触摸时,我可以看到Button图标发生了变化,但我的onClickListener方法中的函数从未被调用过。有什么帮助吗?
修改
这是我的片段布局:
<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
原来我的按钮上有另一个按钮,所以该按钮正在接收onClick事件而不是我的按钮。当我在Eclipse中使用Hierarchy视图时,我能够弄明白。非常有用。
答案 0 :(得分:1)
试试这个。
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;
}
}
}
答案 1 :(得分:1)
我认为我的另一个视图与我的按钮重叠,这就是为什么它从未被调用过。
SO DUMB!遗憾。
答案 2 :(得分:0)
在其他片段中使用片段时,应使用getChildFragmentManager()
。