2016-04-18 6 views
2

in meinem DialogFragment Aufruf, das tue ich gerade:NPE wenn getDialog.getWindow in DialogFragment der onResume

override fun onResume() { 
     super.onResume() 
     dismissDialog() 
     getDialog().getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, DimenUtil.dpToPx(220f, resources)); 
     getDialog().getWindow().setGravity(Gravity.BOTTOM) 
     getDialog().setCanceledOnTouchOutside(false) 
    } 

aber ich habe NPE:

Unable to resume activity {PublishActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window android.app.Dialog.getWindow()' on a null object reference 
    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3308) 
    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3344) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1583) 
    at android.os.Handler.dispatchMessage(Handler.java:111) 
    at android.os.Looper.loop(Looper.java:194) 
    at android.app.ActivityThread.main(ActivityThread.java:5773) 
    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:1004) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:799) 

In meiner Tätigkeit beginne ich eine DialogFragment und bekam diese Error. Es passiert mehrmals.

Antwort

1

Sie sollten gegen getDialog() überprüfen, ob seine nicht null ist, sollten Sie Ihren Code onViewCreated/onCreate kopieren Sie die LayoutParameters anwenden und Sie können Ihren Code in Resume so lange halten, wie Sie überprüfen gegen NPE

if(getDialog() !=null){ 
     dismissDialog() 
     getDialog().getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, DimenUtil.dpToPx(220f, resources)); 
     getDialog().getWindow().setGravity(Gravity.BOTTOM) 
     getDialog().setCanceledOnTouchOutside(false) 
    } 
+0

ich habe gerade keine Idee warum die getDialog() gibt null zurück –