मैंने सलाह here सलाह दी है, सलाह here, सलाह here, मैंने अपनी बेस गतिविधि में ATAttachedToWindow() पर टिप्पणी की है। मेरे पास इस वर्ग, बेसएक्टिविटी से विरासत में दो गतिविधियां हैं। एक रन चलता है, और कोई नहीं करता है। क्या अंतर हो सकता है? मेरा लक्ष्य एसडीके 1 9 है; इसे 12 में बदलना कोई फर्क नहीं पड़ता। यहाँ BaseActivity के लिए मेरे onCreate है:IllegalArgumentException: खिड़की को जोड़ने के बाद विंडो प्रकार बदला नहीं जा सकता
@Override
protected void onCreate(Bundle savedInstanceState) {
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onAttachedToWindow();
super.onCreate(savedInstanceState);
....
}
जब दूसरी गतिविधि पर जाकर, कोड के माध्यम से कदम है, यह इसके onCreate के माध्यम से करता है(), onResume(), तो दुर्घटनाओं।
समस्या क्या हो सकती है?
स्टैकट्रेस:
06-26 13:41:57.963 28667-28667/com.assistek.ediary E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.assistek.ediary, PID: 28667
java.lang.IllegalArgumentException: Window type can not be changed after the window is added.
at android.os.Parcel.readException(Parcel.java:1550)
at android.os.Parcel.readException(Parcel.java:1499)
at android.view.IWindowSession$Stub$Proxy.relayout(IWindowSession.java:903)
at android.view.ViewRootImpl.relayoutWindow(ViewRootImpl.java:5301)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1507)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1061)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5885)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
at android.view.Choreographer.doCallbacks(Choreographer.java:580)
at android.view.Choreographer.doFrame(Choreographer.java:550)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
संपादित: अगर मैं एपीआई 12 लक्षित करते हैं और onAttachedToWindow
में से onCreate
में परिवर्तन के सभी डाल करने के लिए बदलने के लिए, मैं दूर जाना इस अपवाद प्राप्त कर सकते हैं, लेकिन मैं चाहता हूँ लक्ष्य एसडीके 19.
मेरे नई onCreate() होने के लिए:
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
...
}
मेरे नई onAttachedToWindow():
@Override
public void onAttachedToWindow() {
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
}
लक्ष्य एपीआई के साथ यह केवल काम करता है 12.
उत्तर Min target must be less than 14 when WindowManager.LayoutParams.TYPE_KEYGUARD used
के लिए एपीआई 19 इस कोशिश –
यदि आपके पास है, तो 'onAttachedToWindow()' के ओवरराइड के अंदर कहीं भी 'super.onAttachedToWindow()' को कॉल न करें। जबकि मैं 'TYPE_KEYGUARD' से बात नहीं कर सकता, शेष कोड 'super.onCreate()' के बाद होना चाहिए, लेकिन किसी भी' setContentView() 'कॉल से पहले होना चाहिए। इसके अलावा, देखें कि क्या आपके पास अपने मैनिफेस्ट में कुछ दिलचस्प है जो आपकी दो गतिविधियों के बीच अंतर को समझा सकता है। – CommonsWare
एकमात्र चीज जो दोनों गतिविधियों के बीच अलग है: एंड्रॉइड: clearTaskOnLaunch = "true" –