Android.content.Context.getPackageName () 'sur une référence d'objet nulle

Bonjour, je travaille avec Fragments qui implémente une interface.

public class SigninFragment extends Fragment implements SigninInterface 

L'implémentation de la méthode de l'interface dans la classe de fragment est la suivante.

  • GetFragmentManager.findFragmentByTag () renvoie null
  • Pourquoi voudrais-je vouloir `setRetainInstance (false)`? - Ou - La manière correcte de gérer la rotation de l'appareil
  • DialogFragment: NullPointerException (bibliothèque de support)
  • Objet du conteneur dans les fragments pour Android
  • Android: changez la couleur de fond du fragment
  • Flèche déroulante Android Spinner ne s'affiche pas
  •  @Override public void afterSubmitClicked(String userId, Bundle bundle) { Log.d(TAG,"Calling time afterSubmitClicked called"+bundle); if(!userId.equals("-1")){ //Logged in successfully //Move to MusicHome Intent mIntent = new Intent(getActivity(),MusicHome.class); mIntent.putExtra("SigninFragment.user_details", bundle); startActivity(mIntent); }else{ //Logging in failed //show error dialog } } 

    Cette méthode est appelée après l'exeltation d'une classe AsynchronousTask (qui étend AsyncTask).

    Mais je suis en train d'écraser. Et le message d'erreur s'affiche

     java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference 

    Logcat

      02-14 16:37:04.648: E/AndroidRuntime(28177): Process: com.raaga.android, PID: 28177 02-14 16:37:04.648: E/AndroidRuntime(28177): java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference 02-14 16:37:04.648: E/AndroidRuntime(28177): at android.content.ComponentName.<init>(ComponentName.java:77) 02-14 16:37:04.648: E/AndroidRuntime(28177): at android.content.Intent.<init>(Intent.java:3996) 02-14 16:37:04.648: E/AndroidRuntime(28177): at com.raaga.fragments.SigninFragment.afterSubmitClicked(SigninFragment.java:152) 02-14 16:37:04.648: E/AndroidRuntime(28177): at com.raaga.asynctask.SignInAsyncTask.onPostExecute(SignInAsyncTask.java:92) 02-14 16:37:04.648: E/AndroidRuntime(28177): at com.raaga.asynctask.SignInAsyncTask.onPostExecute(SignInAsyncTask.java:1) 02-14 16:37:04.648: E/AndroidRuntime(28177): at android.os.AsyncTask.finish(AsyncTask.java:632) 02-14 16:37:04.648: E/AndroidRuntime(28177): at android.os.AsyncTask.access$600(AsyncTask.java:177) 02-14 16:37:04.648: E/AndroidRuntime(28177): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645) 02-14 16:37:04.648: E/AndroidRuntime(28177): at android.os.Handler.dispatchMessage(Handler.java:102) 02-14 16:37:04.648: E/AndroidRuntime(28177): at android.os.Looper.loop(Looper.java:135) 02-14 16:37:04.648: E/AndroidRuntime(28177): at android.app.ActivityThread.main(ActivityThread.java:5221) 02-14 16:37:04.648: E/AndroidRuntime(28177): at java.lang.reflect.Method.invoke(Native Method) 02-14 16:37:04.648: E/AndroidRuntime(28177): at java.lang.reflect.Method.invoke(Method.java:372) 02-14 16:37:04.648: E/AndroidRuntime(28177): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 02-14 16:37:04.648: E/AndroidRuntime(28177): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 

    J'ai essayé et exploré dans Google. Mais je n'ai eu aucune solution. Est-ce que quelqu'un pourrait vous aider?

  • Pourquoi voudrais-je vouloir `setRetainInstance (false)`? - Ou - La manière correcte de gérer la rotation de l'appareil
  • Comment accéder à la vue d'activité parentale dans Fragment
  • Fragment Transaction charge la vue vide mais le fragment est affiché après le dispositif rotatif
  • Comment mettre en cache une vue de fragment
  • OK pour mettre à jour les fragments au lieu de créer de nouvelles instances?
  • Comment créer une boîte de dialogue à onglets Android contenant des fragments?
  • 5 Solutions collect form web for “Android.content.Context.getPackageName () 'sur une référence d'objet nulle”

    J'ai trouvé l'erreur de ce que j'ai fait. Nous devons obtenir l'instance d'activité de la méthode de substitution OnAttach () Par exemple,

     public MainActivity activity; @Override public void onAttach(Activity activity){ this.activity = activity; } 

    Ensuite, passez l'activité comme un contexte comme suit.

     Intent mIntent = new Intent(activity, MusicHome.class); 

    Les réponses à cette question m'ont aidé à trouver mon problème, mais ma source était différente, donc j'espère que cela peut éclairer quelqu'un qui trouve cette page à la recherche de réponses au crash du contexte «aléatoire»:

    J'avais spécifié un objet SharedPreferences, et essayé de l'instanter à sa déclaration de niveau de classe, de la manière suivante:

     public class MyFragment extends FragmentActivity { private SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //... 

    Référencer this avant que onCreate ait provoqué "java.lang.NullPointerException: tentative d'appel de la méthode virtuelle" java.lang.String android.content.Context.getPackageName () "sur une référence d'objet nulle" pour moi.

    L'instanciation de l'objet à l'intérieur de onCreate () a résolu mon problème, de la manière suivante:

     public class MyFragment extends FragmentActivity { private SharedPreferences sharedPref ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //... sharedPref = PreferenceManager.getDefaultSharedPreferences(this); 

    J'espère que cela pourra aider.

    API Android android 23.

    Utilisation

    GetContext ()

    au lieu de

    GetActivity ()

    .

    2. texte fort

    GetActivity () donne le contexte de l'activité. Ici, vous pouvez utiliser

    MyActivity.this

    au lieu de

    GetActivity () / getApplicationContext ()

    Il suffit de faire ceci:

     Intent myIntent = new Intent(MainActivity.this, nextActivity.class); 

    Pour moi, le problème était que je passais l'activité au constructeur, pas le contexte

     public Adapter(Activity activity, List<MediaItem> items, boolean can) { mItems = items; canEdit = can; mActivity = activity; } 

    Et en utilisant cette activité pour obtenirDefaultSharedPreferences (), j'ai donc changé Activity to Context et j'appelais encore le constructeur Adapter avec MainActivity.this

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.