2015-05-21 3 views
0

Я хочу определить, нажата ли нажата кнопка дома, мне не нужно менять ее поведение. как я могу это реализовать? я попытался это решение, но я получил исключениеобнаружение кнопки дома нажата

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

Решение в [продублируйте] тема не работает на андроид л на устройстве

Правильное решение

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 каждой деятельности в рамках проекта (вы можете создать общий предок для вашей деятельности, если вы хотите, но если ваша деятельность уже простиралась от MapActivity/ListActivity и т.д., вам все еще нужно написать следующее вручную):

 @Override 
     protected void onResume() { 
      super.onResume(); 
mPager.startAutoScroll(); 
      MyApplication.activityResumed(); 
     } 

     @Override 
     protected void onPause() { 
      super.onPause(); 
      MyApplication.activityPaused(); 
mPager.stopAutoScroll(); 
     } 

ответ

0

ошибка в onAttachedToWindow методе, поэтому постарайтесь изменить порядок обеих линий - первое, что вы хотите и затем вызовите супер метод следующим образом:

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

нет, получено исключение –

Смежные вопросы