web-dev-qa-db-fra.com

NullPointerException addToRequestQueue (com.Android.volley.Request, Java.lang.String) 'sur une référence d'objet null

J'utilise connexion au registre AndroidHive et cela fonctionne très bien dans l'exemple de projet de ce registre de connexion.

Mais après plusieurs tentatives avec CardViews et d'autres widgets, cette erreur apparaît sur le LogCat:

Java.lang.NullPointerException: Attempt to invoke virtual method 'void client.myproject.app.AppController.addToRequestQueue(com.Android.volley.Request, Java.lang.String)' on a null object reference
            at client.myproject.RegisterActivity.registerUser(RegisterActivity.Java:185)
            at client.myproject.RegisterActivity.access$300(RegisterActivity.Java:35)
            at client.myproject.RegisterActivity$1.onClick(RegisterActivity.Java:81)
            at Android.view.View.performClick(View.Java:4780)
            at Android.view.View$PerformClick.run(View.Java:19866)
            at Android.os.Handler.handleCallback(Handler.Java:739)
            at Android.os.Handler.dispatchMessage(Handler.Java:95)
            at Android.os.Looper.loop(Looper.Java:135)
            at Android.app.ActivityThread.main(ActivityThread.Java:5254)
            at Java.lang.reflect.Method.invoke(Native Method)
            at Java.lang.reflect.Method.invoke(Method.Java:372)
            at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:903)
            at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:698)

Bien que ces codes fonctionnent bien dans une seule application (juste avec la connexion d'enregistrement).

J'utilise la bibliothèque Volley.

19
ʍѳђઽ૯ท

Dans votre AndroidManifest.xml ajouter

<application Android:name="YOURPACKAGENAME.AppController" 
             Android:allowbackup="true" 
             Android:icon="@drawable/ic_launcher" 
             Android:label="@string/app_name"
             Android:theme="@style/AppTheme">
68
Damian Kozlak

Comme le dit N1to, vous devez ajouter votre contrôleur dans le AndroidManifest.xml, Si vous ne l'ajoutez pas alors la onCreate() n'est jamais appelée et lorsque vous appelez AppController.getInstance() la l'instance est nulle.

<application Android:name="YOURPACKAGENAME.AppController" 
         Android:allowbackup="true" 
         Android:icon="@drawable/ic_launcher" 
         Android:label="@string/app_name"
         Android:theme="@style/AppTheme">

Cela fonctionne aussi pour moi avec:

<application Android:name=".AppController" 
         Android:allowbackup="true" 
         Android:icon="@drawable/ic_launcher" 
         Android:label="@string/app_name"
         Android:theme="@style/AppTheme">
7
isma3l

Dans mon cas, j'ai oublié d'initialiser la variable rq, assurez-vous de l'avoir fait

    ...
    private RequestQueue rq;   // rq = null (NullPointerException if you use)
    ...

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ...
        rq = Volley.newRequestQueue(YourActivity.this);  // rq != null
    }
    ...
    rq.add(request);
6
Marcelo Meneses

Dans le fichier manifeste, ajoutez appcontroller comme indiqué

<application Android:name="app.AppController" 
         Android:allowbackup="true" 
         Android:icon="@drawable/ic_launcher" 
         Android:label="@string/app_name"
         Android:theme="@style/AppTheme">
3
DEEP ADHIYA

Veuillez vérifier si vous avez initialisé votre objet requestQueue comme:

requestQueue = Volley.newRequestQueue(this);

1
Rishab Jula

Vous n'avez transmis aucune donnée à la méthode volley, cela signifie qu'elle obtient des données nulles (données vides) ..... voir l'exemple:

protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> map=new HashMap<>();
                map.put(region, regionName);
                return map;
            }

si regionName est vide, cela vous donnera NullPointerException, donc regionName doit avoir quelque chose .....

0
jerry