У меня есть несколько значков камеры рядом с несколькими вопросами. Таким образом, если пользователь должен сделать снимок, чтобы документировать ответ, который они могут сделать. Все это происходит внутри фрагмента. У меня есть следующий код:Несколько кнопок изображения для одной цели в фрагменте
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);
Я спрашиваю потому, что инструкция переключателя кажется излишней, видя, как все эти кнопки сделайте точно такой же вещь. Все они просто называют камеру. Я уверен, что другие столкнулись с этим и нашли более эффективное/элегантное решение. Заранее спасибо!
Рабочий код
Это то, что я осела на использовании, я 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;
}
}
ха-ха, я знал, что это что-то простое. Не могу поверить, что я об этом не думал. Спасибо, мой друг – IrishWhiskey
Это в основном то же самое, что и ваше собственное решение. – ozbek
@shoe крыса это, но это не так, я искал, главным образом, избежать создания нескольких слушателей кнопки изображения. Объявление каждой кнопки казалось неизбежным без какой-либо петли – IrishWhiskey