#android #onlongclicklistener
#Android #onlongclicklistener
Вопрос:
У меня в макете 8 номеров ImageView
, и я установил LongClickListner
для всех ImageView
. Если пользователь долго нажимает на изображение (любое изображение), изображение будет сохранено в галерее. Но моя проблема здесь в том, что когда пользователь долго нажимает на 8-е изображение, 1-е или другие (1 из них) сохраняются в галерее. Я хочу, чтобы когда пользователь долго нажимал на 8-е изображение, 8-е изображение сохранялось, а не остальные.
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.saveImage:
if(img1.isLongClickable() ){
BitmapDrawable bitmapDrawable = (BitmapDrawable)img1.getDrawable();
Bitmap bitmap = bitmapDrawable.getBitmap();
Random random = new Random();
int x = random.nextInt(1000000);
saveImageUtils.insertImage(getActivity().getContentResolver(),bitmap,String.valueOf(x));
//SaveImage(bitmap);
Toast.makeText(getContext(), "Image Saved to Device", Toast.LENGTH_SHORT).show();
break;
}else if(img2.isLongClickable()){
BitmapDrawable bitmapDrawable = (BitmapDrawable)img2.getDrawable();
Bitmap bitmap = bitmapDrawable.getBitmap();
Random random = new Random();
int x = random.nextInt(1000000);
saveImageUtils.insertImage(getActivity().getContentResolver(),bitmap,String.valueOf(x));
//SaveImage(bitmap);
Toast.makeText(getContext(), "Image Saved to Device", Toast.LENGTH_SHORT).show();
break;
}else if(img3.isLongClickable()){
BitmapDrawable bitmapDrawable = (BitmapDrawable)img3.getDrawable();
Bitmap bitmap = bitmapDrawable.getBitmap();
Random random = new Random();
int x = random.nextInt(1000000);
saveImageUtils.insertImage(getActivity().getContentResolver(),bitmap,String.valueOf(x));
//SaveImage(bitmap);
Toast.makeText(getContext(), "Image Saved to Device", Toast.LENGTH_SHORT).show();
break;
}else if(img4.isLongClickable()){
BitmapDrawable bitmapDrawable = (BitmapDrawable)img4.getDrawable();
Bitmap bitmap = bitmapDrawable.getBitmap();
Random random = new Random();
int x = random.nextInt(1000000);
saveImageUtils.insertImage(getActivity().getContentResolver(),bitmap,String.valueOf(x));
//SaveImage(bitmap);
Toast.makeText(getContext(), "Image Saved to Device", Toast.LENGTH_SHORT).show();
break;
}else if(img5.isLongClickable()){
BitmapDrawable bitmapDrawable = (BitmapDrawable)img5.getDrawable();
Bitmap bitmap = bitmapDrawable.getBitmap();
Random random = new Random();
int x = random.nextInt(1000000);
saveImageUtils.insertImage(getActivity().getContentResolver(),bitmap,String.valueOf(x));
//SaveImage(bitmap);
Toast.makeText(getContext(), "Image Saved to Device", Toast.LENGTH_SHORT).show();
break;
}else if(img6.isLongClickable()){
BitmapDrawable bitmapDrawable = (BitmapDrawable)img6.getDrawable();
Bitmap bitmap = bitmapDrawable.getBitmap();
Random random = new Random();
int x = random.nextInt(1000000);
saveImageUtils.insertImage(getActivity().getContentResolver(),bitmap,String.valueOf(x));
//SaveImage(bitmap);
Toast.makeText(getContext(), "Image Saved to Device", Toast.LENGTH_SHORT).show();
break;
}else if(img7.isLongClickable()){
BitmapDrawable bitmapDrawable = (BitmapDrawable)img7.getDrawable();
Bitmap bitmap = bitmapDrawable.getBitmap();
Random random = new Random();
int x = random.nextInt(1000000);
saveImageUtils.insertImage(getActivity().getContentResolver(),bitmap,String.valueOf(x));
//SaveImage(bitmap);
Toast.makeText(getContext(), "Image Saved to Device", Toast.LENGTH_SHORT).show();
break;
}else if(img8.isLongClickable()){
BitmapDrawable bitmapDrawable = (BitmapDrawable)img8.getDrawable();
Bitmap bitmap = bitmapDrawable.getBitmap();
Random random = new Random();
int x = random.nextInt(1000000);
saveImageUtils.insertImage(getActivity().getContentResolver(),bitmap,String.valueOf(x));
//SaveImage(bitmap);
Toast.makeText(getContext(), "Image Saved to Device", Toast.LENGTH_SHORT).show();
break;
}
}
return super.onContextItemSelected(item);
}
Комментарии:
1. Показать полный фрагмент кода. Не могу понять существующий.
Ответ №1:
То, что вы представили выше, похоже на это:
- По-видимому, ваши ImageView
OnLongClickListener
были назначены - Пользователь нажимает пункт меню панели инструментов,
R.id.saveImage
а вы пытаетесь сохранить изображение на основеisLongClickable
указания
Если true, то приведенное выше неверно, потому что isLongClickable
это в основном просто указание на то, что данный элемент управления OnLongClickListener
назначен.
Что вам следует делать: либо выполняйте сохранение внутри каждого соответствующего OnLongClickListener
(и это onLongClick
даст вам представление, то есть ImageView), либо, если вам нужно выполнять сохранение только по R.id.saveImage
щелчку, тогда в OnLongClickListener
вы должны каким-то образом сообщить своему приложению, что на данный ImageView долго нажимали, а затем по R.id.saveImage
щелчку выполнить итерацию по записанному списку длинных щелчков ImageView и выполнить сохранение.