2017-01-10 118 views
4
E/AndroidRuntime: FATAL EXCEPTION: main 
        Process: websters.smartindiaserviceapp, PID: 3320 
        java.lang.RuntimeException: Unable to start activity ComponentInfo{websters.smartindiaserviceapp/websters.smartindiaserviceapp.Activities.WelcomeActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.support.v4.app.FragmentTransaction android.support.v4.app.FragmentManager.beginTransaction()' on a null object reference 
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
         at android.app.ActivityThread.-wrap11(ActivityThread.java) 
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
         at android.os.Handler.dispatchMessage(Handler.java:102) 
         at android.os.Looper.loop(Looper.java:148) 
         at android.app.ActivityThread.main(ActivityThread.java:5417) 
         at java.lang.reflect.Method.invoke(Native Method) 
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
        Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.support.v4.app.FragmentTransaction android.support.v4.app.FragmentManager.beginTransaction()' on a null object reference 
         at android.support.v4.app.DialogFragment.dismissInternal(DialogFragment.java:200) 
         at android.support.v4.app.DialogFragment.dismiss(DialogFragment.java:171) 
         at websters.smartindiaserviceapp.Activities.WelcomeActivity.onCreate(WelcomeActivity.java:51) 
         at android.app.Activity.performCreate(Activity.java:6237) 
         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)  
         at android.app.ActivityThread.-wrap11(ActivityThread.java)  
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  
         at android.os.Handler.dispatchMessage(Handler.java:102)  
         at android.os.Looper.loop(Looper.java:148)  
         at android.app.ActivityThread.main(ActivityThread.java:5417)  
         at java.lang.reflect.Method.invoke(Native Method)  
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  

这个异常我得到当我试图解雇定制对话框中actvtiyandroid.support.v4.app.FragmentManager.beginTransaction()”上一个空对象引用

public class CustomDialog extends DialogFragment { 

    public static CustomDialog newInstance() { 
     return new CustomDialog(); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.dialog, container, false); 
     Glide.with(this).load(R.drawable.loader).placeholder(R.drawable.loader) 
       //.dontAnimate() 
       .into((ImageView) v.findViewById(R.id.progress)); 
     getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE); 
     getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 

     if (getDialog() == null) 
      super.setShowsDialog (false); 
     return v; 
    } 

} 

这是我的班为自定义对话框。

我显示对话框使用此代码: CustomDialog.newInstance().show(getSupportFragmentManager(),"Dialog");做工精细显示对话框

并尝试使用CustomDialog.newInstance().dismiss();此代码解雇 但在这里我得到异常,请告诉我哪里做错了,如何解雇给予对话框。

+0

显示您的完整代码... –

+0

您的问题不是与对话框(从我能告诉),而是与'WelcomeActivity'相反。您正在对尚未初始化的对象调用'beginTransaction()'。 – TheAnonymous010

+0

可能重复[什么是NullPointerException,以及如何解决它?](http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it ) – TheAnonymous010

回答

4

newInstance每次都会

给你一个新的参考初始化您的对话框像

CustomDialog customDialog = CustomDialog.newInstance(); 
customDialog.show(getSupportFragmentManager(),"Dialog"); 

要消除使用

customDialog.dismiss(); 
+0

好的等待。让我试试你的代码 –

1

问题的原因是:

CustomDialog.newInstance().dismiss(); 

,因为首先使用Fragment的两个实例来显示Dialog另一个就是解雇它。

使用片段的同一个实例是回归由

CustomDialog dialogFrag=CustomDialog.newInstance(); 
dialogFrag.show(getSupportFragmentManager(),"Dialog"); 

斥为:

dialogFrag.dismiss(); 
0

好像您呼叫的newInstance()再次驳回返回你的对话框的一个新实例。尝试使用你已经显示的同一个实例,也是为了解雇。

相关问题