按钮对 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 以显示发生的情况(虽然未捕获光标,但您一开始可以看到按钮上没有任何反应(我正在单击它)和恢复后的视觉变化)
总结
尝试让简单的按钮在 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 以显示发生的情况(虽然未捕获光标,但您一开始可以看到按钮上没有任何反应(我正在单击它)和恢复后的视觉变化)