webentwicklung-frage-antwort-db.com.de

NullPointerException addToRequestQueue (com.Android.volley.Request, Java.lang.String) 'für eine Nullobjektreferenz

Ich benutze AndroidHive register login und es funktioniert gut im Beispielprojekt dieses Login-Registers.

Aber nach vielen Versuchen, es mit CardViews und anderen Widgets zu versuchen, erscheint dieser Fehler auf dem 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)

Während diese Codes in einer einzigen App gut funktionieren (nur mit registrierter Anmeldung).

Ich benutze die Volley Bibliothek.

19
ʍѳђઽ૯ท

In deiner AndroidManifest.xml hinzufügen

<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

Wie N1to sagt, müssen Sie Ihren Controller im AndroidManifest.xml Hinzufügen. Wenn Sie ihn nicht hinzufügen, wird die onCreate() nie aufgerufen, und wenn Sie AppController.getInstance() aufrufen, wird die Instanz ist null.

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

Es funktioniert auch bei mir mit:

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

In meinem Fall habe ich vergessen, die Variable rq zu initialisieren, bitte stellen Sie sicher, dass Sie es getan haben

    ...
    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

Fügen Sie in der Manifestdatei den AppController wie gezeigt hinzu

<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

Bitte überprüfen Sie, ob Sie Ihr requestQueue-Objekt wie folgt initialisiert haben:

requestQueue = Volley.newRequestQueue(this);

1
Rishab Jula

Sie haben keine Daten an die Volley-Methode übergeben, dh es werden Nulldaten (leere Daten) abgerufen ..... siehe Beispiel:

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

wenn regionName leer ist, gibt es eine NullPointerException. regionName muss also etwas haben .....

0
jerry