Как обрабатывать длинные клики в режиме просмотра нескольких изображений - PullRequest
0 голосов
/ 25 марта 2019

У меня есть 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 голос
/ 25 марта 2019

То, что вы представили выше, выглядит так:

  1. Видимо, вашим ImageView присвоено OnLongClickListener с
  2. Пользователь нажимает на элемент меню панели инструментов R.id.saveImage, и вы пытаетесь сохранить изображение на основе isLongClickable указания

Если это правда, вышеприведенное неверно, потому что isLongClickable в основном просто указывает на то, что данному элементу управления назначено OnLongClickListener.

Что вы должны делать: либо сохраняйте данные внутри каждого соответствующего OnLongClickListener (и его onLongClick даст вам представление, то есть ImageView), ИЛИ если вам нужно сделать сохранение только после R.id.saveImage щелчка затем в OnLongClickListener вы должны как-то сообщить своему приложению, что данный ImageView был долгим нажатием, а затем при R.id.saveImage щелчке перебрать записанный список длинных щелчков ImageView и выполнить сохранение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...