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");
}
});
そして、この方法は完璧に機能します。問題は、すべてを自動生成するため、このメソッドを使用できないことです (少なくとも、私が望む方法ではありません...)
これは、これが機能する方法に何らかの制限がありますか? 私はそれを間違っているだけですか?