AndroidHive register login を使用していますが、このlogin-registerのサンプルプロジェクトでは正常に動作しています。
しかし、CardView
sおよび他のウィジェットで何度も試行した後、このエラーは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ライブラリを使用しています。
あなたのAndroidManifest.xml
追加
<application Android:name="YOURPACKAGENAME.AppController"
Android:allowbackup="true"
Android:icon="@drawable/ic_launcher"
Android:label="@string/app_name"
Android:theme="@style/AppTheme">
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">
_
私の場合、変数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);
マニフェストファイルで、示されているようにappcontrollerを追加します
<application Android:name="app.AppController"
Android:allowbackup="true"
Android:icon="@drawable/ic_launcher"
Android:label="@string/app_name"
Android:theme="@style/AppTheme">
RequestQueueオブジェクトを次のように初期化したかどうかを確認してください。
requestQueue = Volley.newRequestQueue(this);
Volleyメソッドにデータを渡さなかったため、nullデータ(空のデータ)を取得します。例を参照してください。
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> map=new HashMap<>();
map.put(region, regionName);
return map;
}
regionNameが空の場合、NullPointerExceptionが発生するため、regionNameには何かが必要です。