我对如何在活动发生变化时触发事件感到困惑。我知道的一件事是使用onWindowFocusChanged()
方法,但我不知道如何使用它。请帮助一个例子,即当活动发生变化时,它应该显示一个吐司说“活动已更改”。
答案 0 :(得分:29)
当窗口焦点发生变化时,将调用以下方法。例如,如果窗口增益/损失集中,它将被触发。如果窗口获得焦点,hasFocus
为真,否则为假。
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if(hasFocus)
Toast.makeText(context, text, duration).show();
}
答案 1 :(得分:2)
id
这可能会有所帮助......
答案 2 :(得分:0)
当活动的当前窗口获得或失去焦点时调用。这是该活动是否对用户可见的最佳指标。默认实现清除密钥跟踪状态,因此应始终调用。
@Override
public void onWindowFocusChanged(boolean hasFocas) {
super.onWindowFocusChanged(hasFocas);
//your code here
}
hasFocus boolean:此活动的窗口是否具有焦点。
答案 3 :(得分:0)
Android 10 限制了应用访问剪贴板。现在,只有当前具有焦点的应用才能访问剪贴板。
以前,您可能会在 onResume 中访问这些数据,但在 Android 10 上这不起作用。相反,您可以使用 onWindowFocusChangedcallback 等待视图布局完毕。