我正在使用 Android 的 andengine 创建一个应用程序。我正在自动生成一些屏幕,需要将特定的 OnClickListeners 设置为特定的按钮。
我正在使用org.andengine.entity.sprite.ButtonSprite
和 org.andengine.entity.sprite.ButtonSprite.OnClickListener
。
每个按钮都有一个 id 字符串,所以我希望在初始化场景时能够创建侦听器并将它们存储在 HashMap 中。像这样:
buttonListeners = HashMap<String, Object>();
OnClickListener ocl = new OnClickListener() {
public void onClick( ButtonSprite pButtonSprite, float pTouchAreaLocalX, float pTouchAreaLocalY ) {
//Do stuff
Log.d("Button Test", "Huzzah A");
}
};
buttonListeners.put("play_button", ocl);
然后当我创建按钮时,只需执行以下操作:
button.setOnClickListener((OnClickListener) buttonListeners.get(button.id));
这不起作用。我怀疑我的 HashMap 存在一些问题,所以我创建了一个与上面相同的类变量 ocl2,在构造函数中对其进行了初始化并尝试像这样使用它:
button.setOnClickListener(ocl2);
它也没有工作。为了确保我不只是做错了“它”,我尝试了这个:
button.setOnClickListener( new OnClickListener()
{
public void onClick( ButtonSprite pButtonSprite, float pTouchAreaLocalX, float pTouchAreaLocalY )
{
//Do stuff
Log.d("Button Test", "Huzzah C");
}
});
这种方式完美无缺。问题是因为我自动生成了所有我不能使用这种方法的东西(至少不是我想要的方式......)
这是对其工作方式的一些限制吗?我只是做错了吗?