检测主页按钮按下

时间:2015-05-21 11:51:23

标签: android button

我想检测用户是否按下了主页按钮,我不需要改变它的行为。我该如何实现它? 我试过这个解决方案,但我得到了异常

 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();
        } 

1 个答案:

答案 0 :(得分:0)

错误在onAttachedToWindow方法中,所以尝试颠倒两行的顺序 - 先做你想要的,然后像这样调用super方法:

@Override
public void onAttachedToWindow() {
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
    super.onAttachedToWindow();           
}