BottomSheet对话框打开多次

时间:2019-02-25 10:13:20

标签: android android-asynctask android-alertdialog

我正在使用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应该只打开一次,现在按照Image的arraylist的大小打开。例如,如果arraylist将有3张图像,它将显示dailog 3次,并相互放置。

1 个答案:

答案 0 :(得分: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()中删除底部工作表对话框;方法并将其放置在方法之外。