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

关于纯代码构建自定义组件的问题
我想写一个图片按钮,继承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