我有一个对象“A”Android:从弹出窗口中,如何在启动弹出窗口的对象中调用方法?
“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
}
});
...其他的方法,如显示(),隐藏()等等......从别人
谢谢你。我确信这是我正在寻找的答案,但我仍然试图绕过它(这是新的)。我正在阅读公共界面。在此期间,我想知道从“mCallHandler mHandler”行开始的PrePopupPanel中的mCallHandler的位置被定义为什么? Eclipse为我提供了一个将其定义为公共接口的机会,但我很困惑。无论如何,感谢您关于对象间通信的关键洞察。 – Ray 2012-03-07 05:07:09
好的。按照您的指示,将ICallHandler更改为mCallHandler,并将其中的所有工作都插入其中!我看到这个问题问几个地方没有答案,所以这里是人。现在我只需要研究这个,直到我完全理解它! – Ray 2012-03-07 05:39:56
对不起。这是ICallHandler mHandler;现在改变:)谢谢:) – user936414 2012-03-09 04:11:09