修改 问题已解决
1) 感谢@geekCode,我使用4.4W,其中w是可穿戴的简称,在我将Android模拟器更改为Android 4.1.2之后, ConnectionException 问题得以解决。
2) 我在示例代码中误导了它,它说“Click Me”,所以之前我用鼠标点击按钮,没有任何反应。然后我做了关于 KeyEvent 的研究,Android API将 event.getAction()== KeyEvent.ACTION_DOWN 解释为 getAction()值:关键已被按下。 我在键盘上按了一个随机键,日志显示出来!
再次感谢大家。
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)事件。这是截图和源代码:
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?