Android: как из всплывающего окна вызвать метод в объекте, который инициировал всплывающее окно? - PullRequest
0 голосов
/ 06 марта 2012

У меня есть объект "А"

«A» инициирует отображение всплывающего окна

В этом всплывающем окне есть кнопка.

Я хочу, чтобы эта кнопка во всплывающем окне инициировала вызов метода в «A».

Я хочу инициировать вызов из строки кода ниже:

"// ПРАВДА ЗДЕСЬ Я ХОЧУ ВЫЗВАТЬ МЕТОД В" A ", из которого было объявлено это всплывающее окно"

Вообще говоря, как я могу вызвать метод в объекте, который объявляет всплывающее окно, из этого всплывающего окна? кажется, это было бы так легко, но я так новичок с этим ОО.

Если это объяснение сбивает с толку, я буду рад украсить.

public EventsOverlay A = new EventsOverlay(a, b))
class EventsOverlay extends ItemizedOverlay<OverlayItem> {

             private PrePopupPanel panel=new PrePopupPanel( R.layout.preview1);
                @Override
        protected boolean onTap(int index) {


              panel.show(true);
            return true;
        }

...

} завершает класс EventsOverly

 class PrePopupPanel {
            View popup;
            boolean isVisible=false;

            PrePopupPanel(int layout) {
              ViewGroup parent=(ViewGroup)mapView.getParent();

              popup=getLayoutInflater().inflate(layout, parent, false);
              popup.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                  hide();
                }
              });

          ImageButton infobtn = (ImageButton)popup.findViewById(R.id.button1);
              infobtn.setOnClickListener(new OnClickListener()
                {
                    public void onClick(View v)
                    {
                        hide();

// RIGHT HERE I WANT TO CALL A METHOD IN "A" from which this popup was declared


                    }
            });

... другие методы, такие как show (), hide () и т. Д. ... скопированы с другого пользователя

Ответы [ 3 ]

1 голос
/ 06 марта 2012

Для этого используйте интерфейс.

- класс A должен реализовывать интерфейс

- передать это в PrePopupPanel.

- вызвать метод черезинтерфейсный объект.

пакет интерфейса com.demo.interface;

public interface ICallHandler {

public void show(String show);

}

Класс

class EventsOverlay extends ItemizedOverlay<OverlayItem> implements ICallHandler{

         private PrePopupPanel panel=new PrePopupPanel( R.layout.preview1,this);
            @Override
    protected boolean onTap(int index) {


          panel.show(true);
        return true;
    }

PrePopupPanel

Class PrePopupPanel {
        View popup;
        boolean isVisible=false;
        ICallHandler mHandler;
        PrePopupPanel(int layout, ICallHandler callHandler) {
          mHandler = callHandler;
          ViewGroup parent=(ViewGroup)mapView.getParent();

          popup=getLayoutInflater().inflate(layout, parent, false);
          popup.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
              hide();
            }
          });

      ImageButton infobtn = (ImageButton)popup.findViewById(R.id.button1);
          infobtn.setOnClickListener(new OnClickListener()
            {
                public void onClick(View v)
                {
                    hide();

// RIGHT HERE I WANT TO CALL A METHOD IN "A" from which this popup was declared
                     mHandler.show();

                }
        });
1 голос
/ 06 марта 2012

Ваш класс находится внутри другого, у вас может быть доступ ко всем методам-элементам вашего родителя.

0 голосов
/ 06 марта 2012

Используйте Методы Android-диалога.

В onCreateDialog вы можете передавать ссылку на свой пользовательский объект и запускать любые методы, которые захотите, когда пользователь нажимает кнопку.Тогда в любом месте вашего кода активности звоните showDialog()

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