关于纯代码构建自定义组件的有关问题

关于纯代码构建自定义组件的问题我想写一个图片按钮,继承ImageButton,传入down和up状态的图片ID,在OnTouch

关于纯代码构建自定义组件的问题
我想写一个图片按钮,继承ImageButton,传入down和up状态的图片ID,在OnTouch的时候更换图片。类是写出来了,但是如果new两个以上的按钮的时候,无论点击哪个按钮,都只会是最后一个按钮响应,请大侠指点

Java code
package com.hahalotto.common.views;import android.content.Context;import android.view.MotionEvent;import android.view.View;import android.widget.ImageButton;public class GameImageButtonView extends ImageButton{        private int buttonUpId;    private int buttonDownId;        public GameImageButtonView(Context context) {        // TODO Auto-generated constructor stub        super(context);    }        public void setButtonStateIds(int upId, int downId)    {        System.out.println(getId());        buttonUpId = upId;        buttonDownId = downId;                setImageResource(upId);        setBackgroundColor(0x00000000);        setOnTouchListener(new ImgBtnTouchListener());    }        class ImgBtnTouchListener implements OnTouchListener    {        public boolean onTouch(View v, MotionEvent event) {            // TODO Auto-generated method stub                        System.out.println(getId());            if (event.getAction() == MotionEvent.ACTION_DOWN)             {                System.out.println("down");                setImageResource(buttonDownId);            }            else            {                System.out.println("up");                setImageResource(buttonUpId);            }                        return false;        }    }}


调用的方式是
Java code
private void initBtns() {        type5Btn = new GameImageButtonView(this);        type10Btn = new GameImageButtonView(this);        type20Btn = new GameImageButtonView(this);                type5Btn.setId(1000);        type10Btn.setId(2000);        type20Btn.setId(3000);                addContentView(type5Btn,new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));        addContentView(type10Btn,new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));        addContentView(type20Btn,new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));                type5Btn.setPadding(60, 110, 0, 0);        type10Btn.setPadding(300, 110, 0, 0);        type20Btn.setPadding(540, 110, 0, 0);                type5Btn.setButtonStateIds(R.drawable.hf_type_5_1, R.drawable.hf_type_5_2);        type10Btn.setButtonStateIds(R.drawable.hf_type_10_1, R.drawable.hf_type_10_2);        type20Btn.setButtonStateIds(R.drawable.hf_type_20_1, R.drawable.hf_type_20_2);        type5Btn.setOnClickListener(new ImgBtnClickListener());        type10Btn.setOnClickListener(new ImgBtnClickListener());        type20Btn.setOnClickListener(new ImgBtnClickListener());    }


[解决办法]
知道问题了,addContentView,这个东西只能调用一次,这个是activity用来初始化自己的UI的,或设置view root.你如果多次调用,每次都会先把前面的remove掉,然后添加新的。
你的这个问题,需要把所有的button放在一个viewgroup中,然后在把这个viewgroup,添加到activity中,就是用addContentView