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 CardView
s 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.
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">
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">
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);
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">
Veuillez vérifier si vous avez initialisé votre objet requestQueue comme:
requestQueue = Volley.newRequestQueue(this);
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 .....