2016-04-18 11 views
2

でgetDialog.getWindowを呼び出すときに、私はちょうど行いますNPE私DialogFragmentにDialogFragmentの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) 
    } 

が、私は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) 

DialogFragmentを開始し、これを得ましたエラー。それは何度か起こります。

答えて

1

そのnullでない場合は、getDialog()に対してチェックする必要があり、あなたはLayoutParametersを適用するためにonViewCreated/onCreateにあなたのコードをコピーしてください、あなたは限り、あなたは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

に対してチェックとして、私はちょうどなしていResumeであなたのコードを維持することができますgetDialog()がnullを返す理由 –

関連する問題