web-dev-qa-db-ja.com

NullPointerException addToRequestQueue(com.Android.volley.Request、Java.lang.String) 'on null object reference

AndroidHive register login を使用していますが、このlogin-registerのサンプルプロジェクトでは正常に動作しています。

しかし、CardViewsおよび他のウィジェットで何度も試行した後、このエラーは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)

これらのコードは1つのアプリで正常に機能します(ログインを登録するだけで)。

私はVolleyライブラリを使用しています。

19
ʍѳђઽ૯ท

あなたのAndroidManifest.xml追加

<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

N1toが言うように、コントローラを_AndroidManifest.xml_に追加する必要があります。追加しない場合、onCreate()は呼び出されず、AppController.getInstance()を呼び出すときはインスタンス無効です。

_<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">
_
7
isma3l

私の場合、変数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);
6
Marcelo Meneses

マニフェストファイルで、示されているようにappcontrollerを追加します

<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

RequestQueueオブジェクトを次のように初期化したかどうかを確認してください。

requestQueue = Volley.newRequestQueue(this);

1
Rishab Jula

Volleyメソッドにデータを渡さなかったため、nullデータ(空のデータ)を取得します。例を参照してください。

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

regionNameが空の場合、NullPointerExceptionが発生するため、regionNameには何かが必要です。

0
jerry