Подтвердить что ты не робот

NullPointerException addToRequestQueue (com.android.volley.Request, java.lang.String) 'для ссылки на нулевой объект

Я использую регистрацию в AndroidHive, и это нормально работает в примере проекта этого логина.

Но после многих попыток попробовать это с CardView и другими виджетами, эта ошибка появляется в 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)

Хотя эти коды прекрасно работают в одном приложении (только при регистрации в логине).

Я использую библиотеку Volley.

4b9b3361

Ответ 1

В AndroidManifest.xml добавить

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

Ответ 2

Как говорит N1to, вам нужно добавить свой контроллер в AndroidManifest.xml, если вы его не добавляете, то onCreate() никогда не вызывается, а когда вы вызываете AppController.getInstance() экземпляр равен null.

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

Это также работает для меня с:

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

Ответ 3

В моем случае я забыл инициализировать переменную rq, пожалуйста, убедитесь, что вы сделали это

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

Ответ 4

В файле манифеста добавить appcontroller, как показано

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

Ответ 5

Вы не передали какие-либо данные методу volley, это означает, что он получает нулевые данные (пустые данные)..... см. пример:

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

Если regionName пуст, он даст вам NullPointerException, поэтому regionName должно иметь что-то.....

Ответ 6

Пожалуйста, проверьте, инициализировали ли вы свой объект requestQueue как:

requestQueue = Volley.newRequestQueue(this);