2012-09-24 8 views
5

W mojej aplikacji java Mam ten kodCo oznacza ten 4-liniowy kod java w aplikacji na Androida?

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

gdy budować go dla Android 2.3 (poziom 10) to kompiluje i działa dobrze. Ale kiedy go zbudować za android 4.0 (poziom 15) kompiluje i daje mi katastrofę w czasie wykonywania i po błędzie

07-16 14:00:03.090: E/AndroidRuntime(29487): FATAL EXCEPTION: main 
07-16 14:00:03.090: E/AndroidRuntime(29487): java.lang.IllegalArgumentException: Window type can not be changed after the window is added. 

kiedy skomentować ten wiersz i budować to działa dobrze i nie ma problemu ..

//this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); 

więc nie rozumiem, dlaczego to się dzieje i co ten kod oznacza?

Edit: niektóre odniesienia są tu

when I run app on my phone.The version is android 4.0.3

toddler safe app on android

+0

Oznacza to po prostu, gdy przychodzi do nowej aktywności jak onDisplay Blackberry –

+0

Wystarczy ustawić targetSDK do mniej niż 14. Wtedy zadziała http://stackoverflow.com/a/32587231/3496570 – Nepster

Odpowiedz

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

służy do wyłączyć przycisk home w android ale

to wada zabezpieczenie zostało ustalone w nowszych wersjach Androida tak to nie będzie działać w ICS i galaretki fasoli ... !!

2
@Override  
public void onWindowFocusChanged(boolean hasFocus) { 
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);  
    super.onWindowFocusChanged(hasFocus); 
} 

miałem pewne problemy z windowAttached jak dobrze, spróbuj użyć windowFocusChanged zamiast.

+7

to nie działa. testowany na Galaxy S3 z Androidem 4.1 –

4

mam rozwiązać ten problem oddanie

this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); 

w onCreate przed wywołaniem Super.

protected void onCreate(Bundle savedInstanceState) { 

     this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); 

     super.onCreate(savedInstanceState); 
} 

Saludos desde Medellín