Java 按钮未对Wear OS应用程序中的任何事件作出反应

Java 按钮未对Wear OS应用程序中的任何事件作出反应,java,android,kotlin,wear-os,android-button,Java,Android,Kotlin,Wear Os,Android Button,摘要 尝试让简单的按钮在Wear OS应用程序中工作。在Kotlin和Java中尝试过。两者都不起作用。前一段时间使用Kotlin让它工作了一次,但是放弃了这个项目。现在,我无法让任何点击或按下事件正常工作 按钮本身甚至没有显示任何视觉验证是否已按下。它只是静止的 编辑: 单击模拟器上的任意位置时,会抛出以下错误: 由于没有窗口焦点而取消事件:MotionEvent 我尝试过的 除了我的代码,我还做了一些故障排除尝试。我改变了AVD手表,改变了API级别,重启了Android Studio,重启

摘要

尝试让简单的按钮在Wear OS应用程序中工作。在Kotlin和Java中尝试过。两者都不起作用。前一段时间使用Kotlin让它工作了一次,但是放弃了这个项目。现在,我无法让任何点击或按下事件正常工作

按钮本身甚至没有显示任何视觉验证是否已按下。它只是静止的

编辑: 单击模拟器上的任意位置时,会抛出以下错误:

由于没有窗口焦点而取消事件: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):

Button btn = (Button) findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        System.out.println("TEST");
    }
});
主要活动:

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:


这些方法均未导致按钮提供任何可视指示,表明其已按下。没有来自函数的logcat。只是一个静态的监视屏幕。

检查您的日志以了解这些 -由于没有窗口焦点而取消事件:MotionEvent{action=action\u CANCEL,actionButton=0,id[0]=0,x[0]=152.99072,y[0]=111.987305,toolType[0]=TOOL\u TYPE\u FINGER,buttonState=0,metaState=0,flags=0x0,edgeFlags=0x0,pointerCount=1,historySize=0,eventTime=151077888,downTime=151077759,deviceId=0,source=0x1002}=0 或类似事件(丢弃事件)

如果你看到它们,点击模拟器上的后退按钮,进入显示你的应用程序和其他应用程序(如设置等)的屏幕(我不知道该屏幕叫什么),从那里打开你的应用程序,现在它就可以工作了。。。一旦如果是这种情况,唯一的解决方法就是使用OnKeyDown。或者,如果不是这样,请告诉我,因为这将是另一个添加到wear os的神秘bug

添加动画gif以显示所发生的情况(虽然光标未被捕获,但您在开始时(我正在单击它)看不到按钮上的任何反应,并且在将其返回后会看到视觉变化)

哇,是的,这确实解决了问题。我可能应该提到我在日志中得到了警告。但我不能总是复制它。非常感谢。顺便说一句。节省了我很多时间:)不客气。我之前遇到过这个问题,当时我很高兴能帮上忙。我也有同样的问题,但用户不会总是打开那个屏幕。有时候第一次点击按钮有效,有时候无效(更常见的是无效)。看起来虽然应用程序正在显示,但它不在“窗口焦点”中。有什么方法可以通过编程实现吗“窗口焦点”?