摘要
[尝试获取简单的按钮以在Wear OS应用程序中工作。在Kotlin和Java中进行了尝试。两者都不起作用。曾经使用Kotlin使其工作,但取消了该项目。现在,我无法获得任何点击或新闻事件。
该按钮本身甚至没有显示任何视觉上的被按下的验证。这只是静态的。
edit:在模拟器上的任何位置单击时,都会引发此错误:
由于没有窗口焦点而取消事件:MotionEvent
我尝试过的
除了我的代码,我还进行了一些故障排除尝试。我已经更改了AVD手表,更改了API级别,重新启动了Android Studio,重新启动了整个计算机。
这里是我的编码尝试:
我尝试设置监听器:
Button btn = (Button) findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
System.out.println("TEST");
}
});
我曾尝试用XML定义函数并在主要活动中定义函数(请参见onClick):
主要活动:
public class MainActivity extends WearableActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Enables Always-on
setAmbientEnabled();
}
public void onClick(View view){
System.out.println("BUTTON CLICKED!");
}
}
XML:
<Button
android:id="@+id/button"
android:layout_width="110dp"
android:layout_height="wrap_content"
android:text="Button"
android:clickable="true"
android:onClick="onClick"/>
这些方法都无法使按钮提供任何已被按下的视觉指示。函数中没有logcat。只是一个静态的手表屏幕。
检查这些日志-由于没有窗口焦点而取消事件:MotionEvent {action = ACTION_CANCEL,actionButton = 0,id [0] = 0,x [0] = 152.99072,y [0] = 111.987305,toolType [0] = TOOL_TYPE_FINGER ,buttonState = 0,metaState = 0,标志= 0x0,edgeFlags = 0x0,pointerCount = 1,historySize = 0,eventTime = 151077888,downTime = 151077759,deviceId = 0,source = 0x1002}或类似的事件(删除事件)。
[如果看到它们,请单击模拟器上的后退按钮,转到显示您的应用程序和其他应用程序(如设置等)的屏幕(我不知道该屏幕叫什么),然后从此处启动您的应用程序将工作...一次。在这种情况下,唯一的解决方法是使用OnKeyDown。或者,如果不是这种情况,请告诉我,因为这将是给OS添加另一个神秘的错误。
[添加动画gif以显示会发生什么情况(虽然没有捕获到光标,但是起初您看不到按钮有任何反应(我正在单击它),并且将其放回后视觉变化)