Android自定义Button的OnKeyDown方法没反应

代码如下:
自定义Button类
public class MyButton extends Button{
public MyButton(Context context,AttributeSet set) {
super(context,set);
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    super.onKeyDown(keyCode,event);
    TextView tv = (TextView) findViewById(R.id.aa);
    tv.setText("123232323");
    Log.v("111","2222");
    return super.onKeyDown(keyCode, event);
}

}

界面xml代码:
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:orientation="vertical"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

<TextView
    android:id="@+id/aa"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
<com.example.cg.view.MyButton
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

public class ****Acticity extends Activity {
@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

MyButton mybutton = new MyButton(this);

mybutton.setFocusable(true);

setContentView(mybutton);

}
}


点击没效果,是因为Activity也有onKeyDown,你在view中设置了onKeyDown,点击时,系统不知道要响应哪一个。你给button添加一个焦点。

http://www.apkbus.com/forum.php?mod=viewthread&tid=251929&extra=page%3D1&_dsign=2a4e40c3

Activity中提供了这个方法,可以让你重写。这个基于回调的事件,只有当按下键盘键,并且别的地方没有处理,才会传递给activity。一般的button是不会响应这个事件的,明白了吧。

我猜你想写的是onTouchEvent

onKeyDown方法监听的是按下系统的Home键,后退键等的监听,
你这是要实现点击按钮改变另外一个TextView的文字吧,直接写个Button再setOnClickListener不行吗?
或者说非要自定义一个Button的话在构造方法中调用setOnClickListener(this),然后在你的MyButton类中实现OnClick方法也可以,不过没什么必要