Я пытаюсь создать всплывающее окно при нажатии кнопки с использованием класса PopupWindow, код работает, но всплывающее окно появляется 2 раза, когда я нажимаю кнопку один раз
Я пробовал использовать переменную счетчика чтобы ограничить количество всплывающих окон и сбрасывать его каждый раз при вызове функции popup.dismiss, но затем появляется второе всплывающее окно после закрытия первого
устройство - oneplus 3t (A3003) android версия - 9.0
Visit_details. java
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_visit_details);
DatabaseReference custRef, visitRef, order_dateRef, statusRef;
Button update_status = findViewById(R.id.btn_update_status);
private PopupWindow status_popup;
RelativeLayout mRelativeLayout;
statusRef = visitRef.child("status");
update_status.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(final View v)
{
statusRef.addValueEventListener(new ValueEventListener()
{
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot)
{
String old_status = dataSnapshot.getValue(String.class);
LayoutInflater inflater = (LayoutInflater) getApplicationContext().getSystemService(LAYOUT_INFLATER_SERVICE);
View customView = inflater.inflate(R.layout.update_status_popup, null);
status_popup = new PopupWindow(getApplicationContext());
status_popup.setContentView(customView);
status_popup.setHeight(LayoutParams.WRAP_CONTENT);
status_popup.setWidth(LayoutParams.MATCH_PARENT);
status_popup.setOutsideTouchable(true);
status_popup.setAnimationStyle(R.style.Animation);
status_popup.setFocusable(true);
RadioButton live = customView.findViewById(R.id.rb_live_pop);
RadioButton lost = customView.findViewById(R.id.rb_lost_pop);
RadioButton closed = customView.findViewById(R.id.rb_closed_pop);
status_popup.showAtLocation(mRelativeLayout, Gravity.CENTER, 0, 0);
statuspopup_count++;
if (old_status.equals("live"))
{
live.setChecked(true);
} else if (old_status.equals("lost"))
{
lost.setChecked(true);
} else if (old_status.equals("closed"))
{
closed.setChecked(true);
}
live.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
new_status = "live";
status_popup.dismiss();
}
});
lost.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
new_status = "lost";
status_popup.dismiss();
}
});
closed.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
new_status = "closed";
status_popup.dismiss();
}
});
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError)
{
}
});
}
});
}