Android 片段中的多个ImageButton用于一个目的

Android 片段中的多个ImageButton用于一个目的,android,android-fragments,android-button,Android,Android Fragments,Android Button,我在多个问题旁边有许多摄像头图标。这样,如果用户必须拍摄照片来记录答案,他们可以。这一切都发生在一个片段中。我有以下代码 public class PostInstallation extends Fragment { View view; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { view = inflater

我在多个问题旁边有许多摄像头图标。这样,如果用户必须拍摄照片来记录答案,他们可以。这一切都发生在一个片段中。我有以下代码

public class PostInstallation extends Fragment {
View view;

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

    view = inflater.inflate(R.layout.fragment_pre_installation, container,
            false);

    ImageButton camera = (ImageButton) view
            .findViewById(R.id.pre_install_camera);     

    camera.setOnClickListener(new View.OnClickListener() {


        public void onClick(View v) {
            Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
            startActivity(intent);
        }

    });     

    return view;
}
}
它工作得很漂亮,没有问题。然而,我很困惑如何才能有效地添加10个以上的
imagebutton
。我必须用这样的东西吗

 button1.setOnClickListener(this);
 button2.setOnClickListener(this);
 button3.setOnClickListener(this);


 @Override
 public void onClick(View v) {
   switch(v.getId()) {
       case R.id.button1:
       // do stuff;
       break;
       case R.id.button2:
       // do stuff;
       break;
   ...
}
}
如果我这样做了,这是否意味着在一个片段中,我必须对所有
ImageButtons
反复调用这个语句

button.setOnClickListener((OnClickListener) this.view);
我之所以问这个问题,是因为switch语句看起来是多余的,因为所有这些按钮都是如何做完全相同的事情的。他们都叫摄像机。我敢肯定,其他人也遇到了这种情况,并找到了一个更有效/更优雅的解决方案。提前谢谢

工作代码

这就是我最终决定使用的,我将投票并欢迎所有在这个线程中用更少的代码完成这项工作的新帖子。我只关心更少的代码。谢谢

public class PostInstallation extends Fragment {
View view;

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

    view = inflater.inflate(R.layout.fragment_post_installation, container,
            false);

    ImageButton camera = (ImageButton) view
            .findViewById(R.id.camera_button);
    ImageButton camera2 = (ImageButton) view
            .findViewById(R.id.camera_button2);
    ImageButton camera3 = (ImageButton) view
            .findViewById(R.id.camera_button3);
    ImageButton camera4 = (ImageButton) view
            .findViewById(R.id.camera_button4);

    OnClickListener cameraListener = new OnClickListener() {            

        public void onClick(View v) {
            Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
            startActivity(intent);
        }

    };

    camera.setOnClickListener(cameraListener);
    camera2.setOnClickListener(cameraListener);
    camera3.setOnClickListener(cameraListener);
    camera4.setOnClickListener(cameraListener);     

    return view;
}
}

只创建一个侦听器并将其添加到所有按钮

OnClickListener cameraListener = new OnClickListener(){
    public void onClick(View v){
        takePicutre()
    }
}
view.findViewById(R.id.button1).setOnClickListener(cameraListener);
view.findViewById(R.id.button2).setOnClickListener(cameraListener);
view.findViewById(R.id.button3).setOnClickListener(cameraListener);

为布局中的所有按钮提供相同的ID

    <ImageButton
        android:id="@+id/pre_install_camera"
        ....
        />
    <ImageButton
        android:id="@+id/pre_install_camera"
        ....
        />
    <ImageButton
        android:id="@+id/pre_install_camera"
        ....
        />
    ....

....

哈哈,我知道这很简单。真不敢相信我居然没想到。谢谢你,我的朋友这基本上和你自己的解决方案一样。@shoe rat是的,但它不是,我主要是想避免制作多个图像按钮侦听器。声明每一个按钮似乎都是不可避免的,没有某种循环,我只是有同样的想法(见编辑后的帖子),我可以用这个,我可以用西蒙的,但因为他是第一个,我接受了他的答案。非常感谢你!没问题,我在你已经接受@SimonSays答案后发布了帖子:)只是想让你知道这不起作用。我希望这样做,因为这样可以节省很多打字时间。然而,Android只识别ID的第一个实例,具有相同ID的所有其他按钮不会对OnClick方法作出反应