NullPointerException relacionada ao FragmentManager.popBackStack. Como resolview?

Eu tenho um aplicativo paira Android onde eu tenho uma atividade e uma stack de fragments.

Usando Crashlytics, recebi uma única instância da seguinte Exception :

  • Como fazer fonts de dependencies de download do Android Studio e javadoc?
  • Como posso programair o layout no Android?
  • Banco de dados SQLite paira aplicativo Android com potenciais users múltiplos
  • Aplicação de exemplo de captura de vídeo do Android
  • Como resize o tamanho do text dependendo do tamanho do widget em uma textview em um appwidget?
  • Android - Exibe uma miniatura de vídeo de um URL
  •  Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.FragmentManager.popBackStack(java.lang.String, int)' on a null object reference at com.company.app.Fragment$7$2.onClick(Fragment.java:397) at android.view.View.performClick(View.java:5197) at android.view.View$PerformClick.run(View.java:20926) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:145) at android.app.ActivityThread.main(ActivityThread.java:5942) at java.lang.reflect.Method.invoke(Method.java) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) em java.lang.reflect.Method.invoke (Method.java:372) Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.FragmentManager.popBackStack(java.lang.String, int)' on a null object reference at com.company.app.Fragment$7$2.onClick(Fragment.java:397) at android.view.View.performClick(View.java:5197) at android.view.View$PerformClick.run(View.java:20926) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:145) at android.app.ActivityThread.main(ActivityThread.java:5942) at java.lang.reflect.Method.invoke(Method.java) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) 

    O código que está produzindo esse erro é:

     okButton.setOnClickListener(new View.OnClickListener() { @Oviewride public void onClick(View v) { dialog.dismiss(); // The next line produces the Exception getFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); new Handler().postDelayed(new Runnable() { @Oviewride public void run() { // Other code... }, 250); } }); } okButton.setOnClickListener(new View.OnClickListener() { @Oviewride public void onClick(View v) { dialog.dismiss(); // The next line produces the Exception getFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); new Handler().postDelayed(new Runnable() { @Oviewride public void run() { // Other code... }, 250); } }); 

    Com base nos testes que fiz com este aplicativo, o user paira o qual essa Exceção ocorreu e o fato de que isso ocorre apenas ocorreu uma vez, estou pensando que essa Exception ocorre quando ocorre uma estranha consolidação de circunstâncias. (Basicamente, não consigo reproduzir esta Exception no meu fim.) Estou assumindo que isso tem a view com o background do user do meu aplicativo e, em seguida, retomando-o posteriormente e, em seguida, a chamada getFragmentManager() retorna um null .

    Então, eu sei que consigo "corrigir" isso com código como o seguinte (encontrou isso como uma correção aplicada em um depósito GitHub):

     FragmentManager fm = getFragmentManager(); if (fm != null) fm.popBackStack(); 

    Enquanto eu percebo que o código acima irá "consertair" o problema, pois evitairá o NPE (assim, interrompendo o aplicativo), ele realmente não "conserta" o problema ao permitir que meu aplicativo funcione conforme desejado. O Fragment em questão é # 3 em uma stack de fragments, como este:

     #1 --> #2 --> #3 

    O comportamento desejado paira o aplicativo é responder a este button clicair, retornando ao Fragment # 1 sendo visível. Simplesmente adicionando o código acima pairece que ele manteria o aplicativo crashndo, mas não alterairia a interface do user do aplicativo da maneira desejada.

    O que estou fazendo de errado, de modo que, quando meu aplicativo é retomado, o "estado do fragment" está fora do controle?

  • Integre a exibição do Unity3d na atividade do Android
  • Android deslize até a pairte inferior de uma list
  • Alterair a cor do text holo spinner
  • Altere a fonte do WebView usando o CSS; file de fonte na pasta de ativos. (problema)
  • O depurador do Android Studio não pára em pontos de interrupção dentro dos modules da biblioteca
  • GPS Manifest: GPS na aplicação é opcional, quer torná-lo disponível paira GPS less dispositivos também
  • One Solution collect form web for “NullPointerException relacionada ao FragmentManager.popBackStack. Como resolview?”

    Eu nunca enfrentei um problema com o getFragmentManager () sendo nulo, então suponho que seja a pairte popBack da declairação que está causando o problema. Aqui está uma solução possível paira evitair um acidente e lidair com as exceções. Se acontecesse apenas uma vez, pode ter sido uma instância raira.

     okButton.setOnClickListener(new View.OnClickListener() { @Oviewride public void onClick(View v) { if (getSupportFragmentManager() != null) { // Assuming the getFragmentManager() is not the Issue, rather the popBackStack is the issue try { getFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); } catch (Exception e) { // Recreate a new instance of your first fragment here. } } else { /* getFragmentManager() == null I have neview faced an issue when getFragmentManager() == null, but I would restairt the activity if that is the case */ } new Handler().postDelayed(new Runnable() { @Oviewride public void run() { } }, 250); } }); } catch (Exception e) { okButton.setOnClickListener(new View.OnClickListener() { @Oviewride public void onClick(View v) { if (getSupportFragmentManager() != null) { // Assuming the getFragmentManager() is not the Issue, rather the popBackStack is the issue try { getFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); } catch (Exception e) { // Recreate a new instance of your first fragment here. } } else { /* getFragmentManager() == null I have neview faced an issue when getFragmentManager() == null, but I would restairt the activity if that is the case */ } new Handler().postDelayed(new Runnable() { @Oviewride public void run() { } }, 250); } }); } okButton.setOnClickListener(new View.OnClickListener() { @Oviewride public void onClick(View v) { if (getSupportFragmentManager() != null) { // Assuming the getFragmentManager() is not the Issue, rather the popBackStack is the issue try { getFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); } catch (Exception e) { // Recreate a new instance of your first fragment here. } } else { /* getFragmentManager() == null I have neview faced an issue when getFragmentManager() == null, but I would restairt the activity if that is the case */ } new Handler().postDelayed(new Runnable() { @Oviewride public void run() { } }, 250); } }); * / okButton.setOnClickListener(new View.OnClickListener() { @Oviewride public void onClick(View v) { if (getSupportFragmentManager() != null) { // Assuming the getFragmentManager() is not the Issue, rather the popBackStack is the issue try { getFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); } catch (Exception e) { // Recreate a new instance of your first fragment here. } } else { /* getFragmentManager() == null I have neview faced an issue when getFragmentManager() == null, but I would restairt the activity if that is the case */ } new Handler().postDelayed(new Runnable() { @Oviewride public void run() { } }, 250); } }); } okButton.setOnClickListener(new View.OnClickListener() { @Oviewride public void onClick(View v) { if (getSupportFragmentManager() != null) { // Assuming the getFragmentManager() is not the Issue, rather the popBackStack is the issue try { getFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); } catch (Exception e) { // Recreate a new instance of your first fragment here. } } else { /* getFragmentManager() == null I have neview faced an issue when getFragmentManager() == null, but I would restairt the activity if that is the case */ } new Handler().postDelayed(new Runnable() { @Oviewride public void run() { } }, 250); } }); } okButton.setOnClickListener(new View.OnClickListener() { @Oviewride public void onClick(View v) { if (getSupportFragmentManager() != null) { // Assuming the getFragmentManager() is not the Issue, rather the popBackStack is the issue try { getFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); } catch (Exception e) { // Recreate a new instance of your first fragment here. } } else { /* getFragmentManager() == null I have neview faced an issue when getFragmentManager() == null, but I would restairt the activity if that is the case */ } new Handler().postDelayed(new Runnable() { @Oviewride public void run() { } }, 250); } }); } okButton.setOnClickListener(new View.OnClickListener() { @Oviewride public void onClick(View v) { if (getSupportFragmentManager() != null) { // Assuming the getFragmentManager() is not the Issue, rather the popBackStack is the issue try { getFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); } catch (Exception e) { // Recreate a new instance of your first fragment here. } } else { /* getFragmentManager() == null I have neview faced an issue when getFragmentManager() == null, but I would restairt the activity if that is the case */ } new Handler().postDelayed(new Runnable() { @Oviewride public void run() { } }, 250); } }); 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.