我在多个问题旁边有许多相机图标。这样,如果用户必须拍照以记录他们可以的答案。这一切都发生在一个片段内。我有以下代码
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个这些ImageButtons
。我必须使用这样的东西吗?
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语句看起来多余,看看所有这些按钮如何处理 完全相同的事情 。他们都只是打电话给相机。我很肯定其他人已经遇到了这个问题,并找到了一个更有效/更优雅的解决方案。提前谢谢!
工作代码
这是我最终决定使用的,我将upvote并欢迎这个帖子中的所有新帖子,用更少的代码完成。我只是减少代码。谢谢!
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;
}
}
答案 0 :(得分:1)
只创建一个侦听器并将其添加到所有按钮。
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);
答案 1 :(得分:1)
为布局中的所有按钮指定相同的ID。
<ImageButton
android:id="@+id/pre_install_camera"
....
/>
<ImageButton
android:id="@+id/pre_install_camera"
....
/>
<ImageButton
android:id="@+id/pre_install_camera"
....
/>
....