2017-09-11 3 views
0

Dans mon Fragment j'ai son code pour l'auditeursur App fragment de CV Call Back Listener est nul

private FragmentTwoCallBackListener fragmentTwoCallBackListener; 

     public interface FragmentTwoCallBackListener { 
      void onItemTypeClick(String itemType,String textInPunjabi); 
     } 

     public void onAdapterItemTypeClick(String textA, String textB){ 


      if(fragmentTwoCallBackListener == null) 
       Log.w(TAG," fragmentTwoCallBackListener Null Error - "); 
      else 
       Log.w(TAG," fragmentTwoCallBackListener not Null - "); 



      fragmentTwoCallBackListener.onItemTypeClick(textInEnglish,textInPunjabi); 

     } 

sur l'utilisation normale de l'application fonctionne très bien. mais quand App est reprise je suis arrivé cette erreur

java.lang.NullPointerException: à com.shayari4u.punjabistatus.FragmentTwo.onAdapterItemTypeClick (FragmentTwo.java:133) à com.shayari4u.punjabistatus.FragmentTwoAdapter 1 $ .onClick (FragmentTwoAdapter.java:115)

après de nombreux Hit & Essayez, je trouve que sur App Reprendre le fragmentTwoCallBackListener objet est nul

Im utilisant ce fragment dans TabbedLayout.

private void setupViewPager(ViewPager viewPager) { 

     ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 
     f1 = new FragmentOne(); 
     if (getIntent().hasExtra("type")) { // PUT EXTRAS FOR FRAGMENT IF GET NOTIFICATION 

      Bundle bundle = new Bundle(); 
      bundle.putString("post_type", getIntent().getStringExtra("type")); 
      f1.setArguments(bundle); 
      Log.w(TAG,"Tabbed Activety Get Notification for Post Type - " + getIntent().getStringExtra("type")); 
     } 

     showItemFragment = new FragmentTwo(); 
     showItemFragment.setFragmentTwoCallBackListener(this); 
     adapter.addFragment(showItemFragment, "Category"); 
     adapter.addFragment(f1, "Posts"); 

     if(adapter==null){ 
      Log.w("Tabbed","Adapter is blank"); 
     }{ 
      viewPager.setAdapter(adapter); 

     } 

    } 

Comment résoudre ce problème plz aider

+0

Avez-vous implémenté votre écouteur? Avez-vous essayé d'utiliser 'new FragmentTwoCallBackListener()' au lieu de 'this', c'est-à-dire l'implémenter en tant que classe anonyme – Gotiasits

Répondre

0

Dans de nombreuses circonstances, le cadre Android tueront processus de votre application pour économiser les ressources du système. Lorsque cela se produit, votre application a la possibilité de sauvegarder son état afin de pouvoir le restaurer lorsque l'utilisateur finit par revenir à votre application.

Tout ce que vous ne stockez pas à l'aide de ce processus sera perdu. Les activités, les fragments et les vues ont tous une capacité intégrée pour sauvegarder leur état lorsque cela se produit. Souvent, c'est une bonne chose, mais ici, ça va rendre votre vie plus difficile. Lorsque le système détruit votre application et la recrée, puisque le gestionnaire de fragments sauvegarde et restaure correctement vos fragments, votre méthode setupViewPager() ne sera plus appelée.

Puisque votre fragment n'a pas un moyen de sauver son FragmentTwoCallBackListener, et depuis setupViewPager() ne sera pas appelé à nouveau à le redéfinir, ce sera null lorsque cela se produit. Une manière de résoudre cela est de changer la façon dont votre instance FragmentTwoCallBackListener est obtenue. Peut-être plutôt que d'utiliser un setter, vous pourriez faire quelque chose comme ceci dans votre fragment:

@Override 
public void onAttach (Context context) { 
    super.onAttach(context); 
    if (context instanceof FragmentTwoCallBackListener) { 
     fragmentTwoCallBackListener = (FragmentTwoCallBackListener) context; 
    } 
} 
+0

Thanks @Ben cela résout le NullPointException. mais maintenant j'ai un autre problème avec mon deuxième fragment. Sur App Resume dans mon deuxième fragment ** ProgressDialoge ** et ** Context ** est Null –