我想检测用户是否按下了主页按钮,我不需要改变它的行为。我该如何实现它? 我试过这个解决方案,但我得到了异常
Android - Error - IllegalArgumentException: Window type can not be changed after the window is added
源
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_HOME){
mPager.stopAutoScroll();
Log.d("Pager", "Autoscroll stopped");
}
return false;
}
[dublicate]主题中的解决方案无法在我的设备上使用android l
正确的解决方案
public class MyApplication extends Application {
public static boolean isActivityVisible() {
return activityVisible;
}
public static void activityResumed() {
activityVisible = true;
}
public static void activityPaused() {
activityVisible = false;
}
private static boolean activityVisible;
}
在AndroidManifest.xml中注册您的应用程序类:
<application
android:name="your.app.package.MyApplication"
android:icon="@drawable/icon"
android:label="@string/app_name" >
将onPause和onResume添加到项目中的每个Activity(如果您愿意,可以为您的活动创建一个共同的祖先,但如果您的活动已经从MapActivity / ListActivity等扩展,您仍需要编写以下内容手工):
@Override
protected void onResume() {
super.onResume();
mPager.startAutoScroll();
MyApplication.activityResumed();
}
@Override
protected void onPause() {
super.onPause();
MyApplication.activityPaused();
mPager.stopAutoScroll();
}
答案 0 :(得分:0)
错误在onAttachedToWindow方法中,所以尝试颠倒两行的顺序 - 先做你想要的,然后像这样调用super方法:
@Override
public void onAttachedToWindow() {
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
}