Android Popupwindow отображает всплывающее окно дважды - PullRequest
0 голосов
/ 01 августа 2020

Я пытаюсь создать всплывающее окно при нажатии кнопки с использованием класса 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)
                {
                }
            });
        }
    });
}

1 Ответ

1 голос
/ 01 августа 2020

Исправлено перемещением addEventValueListener из прослушивателя onclick кнопки. Устранена проблема. Спасибо @MervinHemaraju за указание на это

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