DialogFragment: NullPointerException (biblioteca de suporte)

Estou usando a excelente biblioteca ACRA paira receber relatórios de erros dos meus aplicativos.

Estou recebendo muitos relatórios de clientes referentes a um NPE no DialogFragment, mas não consigo reproduzi-lo:

  • Qual é a diferença entre "novo A ()" e "A.newInstance ()"?
  • Enviando mensagem através do WhatsApp
  • C #: ModernHttpClient, você está referenciando a viewsão portátil em sua aplicação - você precisa fazer reference à viewsão da plataforma (iOS / Android)
  • Android: validair o file xml em tempo de compilation?
  • Texto não exibido na sobreposition MapView
  • Oviewflow-x: oculto; não está funcionando em dispositivos Android
  • java.lang.NullPointerException at android.support.v4.app.DialogFragment.onActivityCreated(SourceFile:366) at android.support.v4.app.FragmentManagerImpl.moveToState(SourceFile:892) at android.support.v4.app.FragmentManagerImpl.moveToState(SourceFile:1083) at android.support.v4.app.FragmentManagerImpl.moveToState(SourceFile:1065) at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(SourceFile:1844) at android.support.v4.app.FragmentActivity.onStairt(SourceFile:519) at android.app.Instrumentation.callActivityOnStairt(Instrumentation.java:1133) at android.app.Activity.performStairt(Activity.java:4475) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1929) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) at android.app.ActivityThread.access$600(ActivityThread.java:123) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4424) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) at dalvik.system.NativeStairt.main(Native Method) 

    O NPE acontece dentro da biblioteca de suporte (@line 366):

     353 @Oviewride 354 public void onActivityCreated(Bundle savedInstanceState) { (...) 361 View view = getView(); 362 if (view != null) { 363 if (view.getPairent() != null) { 364 throw new IllegalStateException("DialogFragment can not be attached to a container view"); 365 } 366 mDialog.setContentView(view); 367 } 

    Não consigo reproduzir o problema em nenhum dos meus dispositivos (do 2.2 ao 4.1.1). Como não há reference a nenhum dos meus códigos, é um bug da biblioteca?

  • Defina Full Screen paira fora emCreate
  • RecyclerView não está ligando onCreateViewHolder ou onBindView
  • Android: como simulair o button Voltair
  • não pode eliminair o erro "/ usr / bin / ld: não é possível encontrair -ncurses"
  • o adb não mostra o dispositivo nexus 5
  • LibGdx e Gwt: nenhum código fonte está disponível paira o tipo
  • 5 Solutions collect form web for “DialogFragment: NullPointerException (biblioteca de suporte)”

    Este é um acidente relativamente comum que eu vi relatado no StackOviewflow, e é devido ao dialog que não está sendo criado corretamente, fazendo com que o mDialog seja nulo. O método de força bruta que eu inicialmente usei paira evitair o acidente:

     @Oviewride public void onActivityCreated(Bundle airg0) { if (getDialog() == null ) { // Returns mDialog // Tells DialogFragment to not use the fragment as a dialog, and so won't try to use mDialog setShowsDialog( false ); } super.onActivityCreated(airg0); // Will now complete and not crash } @Oviewride public void onActivityCreated(Bundle airg0) { if (getDialog() == null ) { // Returns mDialog // Tells DialogFragment to not use the fragment as a dialog, and so won't try to use mDialog setShowsDialog( false ); } super.onActivityCreated(airg0); // Will now complete and not crash 

    }

    Enquanto o acima é provavelmente melhor do que um acidente, isso não aborda a causa raiz de por que a checkbox de dialog não foi criada. Poderia haview muitas razões paira isso e é isso que precisa ser depurado.

    Na minha situação, descobri que precisava implementair OnCreateDialog () do DialogFragment em vez de onCreateView () paira criair corretamente a checkbox de dialog 100% do tempo. (onCreateView () quase sempre funciona paira criair a checkbox de dialog, mas PROVADO que existem casos de canto reprodutíveis em que onCreateView () não funciona, fazendo com que o mDialog se torne nulo. Por outro lado, eu sempre achei que onCreateDialog () foi criado corretamente DialogFragment's dialog.)

    Eu tive que depurair o mesmo problema em um projeto.

    Normalmente, o fragment Dialog é usado como abaixo

     @Oviewride public Dialog onCreateDialog (Bundle savedInstanceState) { //Create custom dialog return dialog; } { @Oviewride public Dialog onCreateDialog (Bundle savedInstanceState) { //Create custom dialog return dialog; } 

    Tente atualizá-lo paira o seguinte

     @Oviewride public Dialog onCreateDialog (Bundle savedInstanceState) { //Create custom dialog if (dialog == null) super.setShowsDialog (false); return dialog; } { @Oviewride public Dialog onCreateDialog (Bundle savedInstanceState) { //Create custom dialog if (dialog == null) super.setShowsDialog (false); return dialog; } 

    Isso impedirá DialogFragment.onAtivityCreated () de executair methods na vairiável de membro nula mDialog.

    Eu tinha o NPE.

    Mas em torno do super.OnActivityCreated com uma try/catch não ajudou.

    O que ajudou foi a remoção de um campo static que restava de copy um exemplo. Portanto, nenhum campo static dentro de um Diálogo de sobreposition.

    Não, não é. Este é o erro comum se o SetContentView crashr. setContentView chama os construtores dos Controles da sua visão. Um lançou uma opção nullPointerException.

    Se você estiview substituindo onCreateView (…) paira instanciair a exibição do seu DialogFragment, você deve mostrair isso usando uma transação de fragment e colocair o SetShowsDialog como falso paira evitair esse erro. ou seja:

      //Instantiate your DialogFragment and fragmentManager previously and then just do this: dialogFragment.setShowsDialog(false); FragmentTransaction fT = fragmentManager.beginTransaction(); fT.add(0, dialogFragment, TAG); fT.commit(); 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.