OnKeyListener,onKeyDown()单击按钮时没有事件传播

时间:2014-08-11 19:41:26

标签: android android-button

修改 问题已解决

1) 感谢@geekCode,我使用4.4W,其中w是可穿戴的简称,在我将Android模拟器更改为Android 4.1.2之后, ConnectionException 问题得以解决。

2) 我在示例代码中误导了它,它说“Click Me”,所以之前我用鼠标点击按钮,没有任何反应。然后我做了关于 KeyEvent 的研究,Android API将 event.getAction()== KeyEvent.ACTION_DOWN 解释为 getAction()值:关键已被按下。 我在键盘上按了一个随机键,日志显示出来! enter image description here

再次感谢大家。

08-11 14:53:36.911    3020-3020/org.crazyit.event V/-MyButton-﹕ the onKeyDown in MyButton
08-11 14:53:36.911    3020-3020/org.crazyit.event V/-Activity-﹕ the onKeyDown in Activity
08-11 14:53:37.101    3020-3020/org.crazyit.event V/-Listener-﹕ the onKeyDown in Listener
08-11 14:53:37.101    3020-3020/org.crazyit.event V/-MyButton-﹕ the onKeyDown in MyButton
08-11 14:53:37.101    3020-3020/org.crazyit.event V/-Activity-﹕ the onKeyDown in Activity

上一个问题:

我是Android的新手,在单击按钮时学习如何传播(所有回调方法返回false)事件。这是截图和源代码:

Enter image description here

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);
        Log.v("-MyButton-", " the onKeyDown in MyButton");
        return false;
    }
}

public class Propagation extends Activity {
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button bn = (MyButton) findViewById(R.id.bn);

        bn.setOnKeyListener(new OnKeyListener() {
            @Override
            public boolean onKey(View view, int i, KeyEvent keyEvent) {
                if(keyEvent.getAction() == KeyEvent.ACTION_DOWN){
                    Log.v("-Listener-", "the onKeyDown in Listenr");
                }

                return false;
            }
        });
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event){
        super.onKeyDown(keyCode, event);
        Log.v("-Activity-", "the onKeyDown in Activity");
        return false;
    }
}

预计会显示详细的日志消息,遗憾的是没有显示任何消息。

另一个奇怪的是我使用IntelliJ IDEA显示:

08-11 19:31:08.241    1367-1488/com.google.android.gms.wearable D/WearableConn? Socket closed
08-11 19:31:08.241    1367-1488/com.google.android.gms.wearable D/WearableConn? Waiting 4.0 seconds to retry connection
08-11 19:31:11.941    1335-1508/com.google.android.wearable.app W/NotifManCompat? Giving up on delivering 1 tasks to ComponentInfo{com.google.android.wearable.app/com.google.android.clockwork.stream.NotificationSideChannelService} after 7 retries
08-11 19:31:12.261    1367-1488/com.google.android.gms.wearable D/WearableConn? Connecting via TCP to /10.0.2.2:5601
08-11 19:31:12.271    1367-1488/com.google.android.gms.wearable D/WearableConn? Error writing to device
    java.net.ConnectException: failed to connect to /10.0.2.2 (port 5601): connect failed: ECONNREFUSED (Connection refused)
            at libcore.io.IoBridge.connect(IoBridge.java:114)
            at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
            at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
            at java.net.Socket.startupSocket(Socket.java:567)
            at java.net.Socket.<init>(Socket.java:226)
            at btx.run(SourceFile:130)
     Caused by: libcore.io.ErrnoException: connect failed: ECONNREFUSED (Connection refused)
            at libcore.io.Posix.connect(Native Method)
            at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:101)
            at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
            at libcore.io.IoBridge.connect(IoBridge.java:112)
            at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
            at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
            at java.net.Socket.startupSocket(Socket.java:567)
            at java.net.Socket.<init>(Socket.java:226)
            at btx.run(SourceFile:130)

我能弄清楚的是程序是否正常工作,但单击“Click Me”按钮时没有传播,为什么抛出ConnectionException?

0 个答案:

没有答案