Android:从弹出窗口中,如何在启动弹出窗口的对象中调用方法?

时间:2012-03-06 05:10:33

标签: android popup

我有一个对象“A”

“A”启动弹出窗口的显示

该弹出窗口中有一个按钮。

我希望弹出窗口中的该按钮启动对“A”中方法的调用。

我想从下面的代码行开始调用:

“//在这里,我想在”A“中调用一个方法,从中宣布这个弹出窗口”

一般来说,如何从弹出窗口中调用声明弹出窗口的对象中的方法?这看起来很简单,但我是这个OO的新东西。

如果这种解释令人困惑,我会很乐意修饰。

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 个答案:

答案 0 :(得分:1)

使用界面执行此操作。

- 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 :(得分:1)

你的班级在另一个班级内,你可以访问你父母的所有成员方法。

答案 2 :(得分:0)

使用Android Dialog methods.

onCreateDialog中,您可以传递对自定义对象的引用,并在用户单击按钮时触发您想要的任何方法。然后,您的活动代码中的任意位置都会调用showDialog()