我正在使用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次,并相互放置。
答案 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()中删除底部工作表对话框;方法并将其放置在方法之外。