按钮对 Wear OS 应用程序中的任何事件没有反应

Button not reacting to any events in Wear OS application

总结

尝试让简单的按钮在 Wear OS 应用程序中工作。在 Kotlin 中尝试过,Java。都没有用。前一段时间使用 Kotlin 让它工作,但放弃了该项目。现在,我无法让任何点击或按下事件起作用。

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

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

Cancelling event due to no window focus: 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 中定义函数并在 main activity 中定义函数(参见 onClick):

主要activity:

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"/>

None 这些方法导致按钮提供任何视觉指示,表明它已被按下。函数中没有 logcat。只是一个静态的手表屏幕。

检查您的日志以了解这些 - 由于没有window焦点而取消事件: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, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=151077888, downTime=151077759 , deviceId=0, 来源=0x1002 } 或类似的(掉落事件)。

如果您看到它们,请单击模拟器上的后退按钮转到显示您的应用程序和其他应用程序(如设置等)的屏幕(我不知道该屏幕叫什么),从那里启动您的应用程序现在它将起作用……一次。如果是这种情况,唯一的解决方法是使用 OnKeyDown。或者,如果不是这种情况,请告诉我,因为添加 wear os.

将是另一个神秘的错误

添加动画 gif 以显示发生的情况(虽然未捕获光标,但您一开始可以看到按钮上没有任何反应(我正在单击它)和恢复后的视觉变化)