BottomSheet对话框打开了一次以上

问题描述 投票:1回答:1

我正在使用bottomsheetlayout弹出社交媒体共享。现在的问题是,它开了不止一次。请帮我解决这个问题。

在我的按钮上单击我调用asynctask下载图像。

@Override
        protected void onPostExecute(Void res) {
            super.onPostExecute(res);
            //prodImageUri1.addAll(prodImageUri);

            if(single_rdb.isChecked())
            {
                   createImageBitmap();
            }
            else if(allimg_rdb.isChecked())
            {

                 temps=new ArrayList<>();
                for(int i=0;i<prodImageUri.size();i++)
                {
                    if(i==8)
                    {
                        break;
                    }
                    temps.add(prodImageUri.get(i));
                   // System.out.println("SIZE "+temps.size()+"TEST1 "+temps.get(i));
                    createImageBitmap();

                }

            }

        }

在这里我调用createImageBitmap方法。现在在这个方法里面我有bottomsheet.show

 public void createImageBitmap(){
   ...................
   ...................
 if(single_rdb.isChecked())
        {
            header_image.setImageURI(prodImageUri.get(0));
            imageview1.setVisibility(View.GONE);
            imageview2.setVisibility(View.GONE);
            imageview3.setVisibility(View.GONE);
            horizontal_image_layout.setVisibility(View.GONE);
        }
        else if(allimg_rdb.isChecked())
        {
            arrayListClone =  (ArrayList<Uri>) temps.clone();
            for(int i=0;i<arrayListClone.size();i++)
            {
               //System.out.println("FAFA"+arrayListClone);
                header_image.setImageURI(arrayListClone.get(i));
               // System.out.println("SIZE "+temps.size()+"TEST "+temps.get(i));
            }

            imageview1.setVisibility(View.GONE);
            imageview2.setVisibility(View.GONE);
            imageview3.setVisibility(View.GONE);
            horizontal_image_layout.setVisibility(View.GONE);
        }

         for(int i=0;i<arrayListClone.size();i++)
        {
            if(i==1)
            {
                break;
            }
            System.out.println("This is check");
            addPhotoBottomDialogFragment = new BottomSheetSharingFragment1();
            addPhotoBottomDialogFragment.show(((FragmentActivity)context).getSupportFragmentManager(),
                    "add_photo_dialog_fragment");
        }

我想要实现的是,bottomDailog应该只打开一次,现在它按照图像的arraylist的大小打开。例如,如果arraylist将有3个图像,它会显示dailog三次并相互叠加。

android android-asynctask android-alertdialog
1个回答
1
投票

好的,从for循环中移除底部对话框调用,并将它放在for循环之外,因为for循环,for循环到达数组列表的末尾,它将继续执行。因此,只需删除底部工作表并将其放在for循环之外由于这段代码,您将面临问题:

for(int i=0;i<prodImageUri.size();i++)
                {
                    if(i==8)
                    {
                        break;
                    }
                    temps.add(prodImageUri.get(i));
                   // System.out.println("SIZE "+temps.size()+"TEST1 "+temps.get(i));
                    createImageBitmap();

                }

所以只需从createImageBitmap()中删除底部工作表对话框;方法并将其放在方法之外。

© www.soinside.com 2019 - 2024. All rights reserved.