EDITTEXT里按下一个键 键盘能响应onKeyUp(),但是响应不了onKeyDown(), 这两个interface定义得完全一样        
public boolean onKeyUp(int keyCode, KeyEvent event) {
Log.d("d", "activity onKeyup");
return false;
}        @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
Log.d("d", "activity onKeydown");
return false;
}DEBUG里只看得到onKeyUp()得消息看不到onKeyDown()的,UP和DOWN都是放在activity里的 
是不是焦点的问题?我在EDITTEXT的XML文件中加入  android:focusable="false"后 onKeyDown()能响应了 但Edittext里的光标又看不到了 到底为什么会这样?

解决方案 »

  1.   

    把 android:focusable="true"设置为TRUE后 onKeyUp() 对键盘上所有的键都有响应 
    而onKeyDown()只对有几个键 SYM,Search还有几个功能键有响应 其他键都没反应 为什么会这样?
      

  2.   


    public class Test extends Activity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            EditText Editor = (EditText) findViewById(R.id.ed);
        }
        
        @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
    Log.d("d", "activity onKeyDown");
    return false;
    }

    public boolean onKeyUp(int keyCode, KeyEvent event) {
    Log.d("d", "activity onKeyup");
    return false;
    }
    }Edittext的xml
        <EditText
        android:id="@+id/ed"
        android:layout_height="fill_parent"
        android:layout_width="fill_parent"
        android:layout_marginLeft="0sp"
        android:layout_marginRight="0sp"
        android:layout_marginTop="5sp"
        android:layout_marginBottom="5sp"
        android:layout_weight="1">
    </EditText>每次按键后 在Logcat里面 只能看到onKeyUp的Log信息 没有 onKeyDown的消息 等于说完全没有执行onKeyDown, 不知道为什么按键后UP的执行了DOWN的没执行
      

  3.   

    你要相应什么键啊,不是很理解,可以用addTextChangedListener(new TextWatcher())试试
      

  4.   

    很显然,KeyDown事件被EDITTEXT处理了,Activity当然拿不到事件啦,Activity处理事件的级别是最低的。详细的情况,请参考我的博客:http://blog.csdn.net/seker_xinjian/archive/2011/03/16/6253617.aspx