Android 创建简单的 volley Singleton class 准备 GET 和 POST 方法
Android create simple volley Singleton class to prepare GET and POST method
使用 android Volley
教程我正在创建简单的单例 class 作为 Volley,但是在准备 GET 和 POST 方法后我得到 NullPointerException
错误,我找不到什么错误:
AppControllert Volley
单例 class:
public class ApplicationController extends Application {
public static final String TAG = "VolleyPatterns";
private RequestQueue mRequestQueue;
private static ApplicationController sInstance;
@Override
public void onCreate() {
super.onCreate();
sInstance = this;
}
public static synchronized ApplicationController getInstance() {
return sInstance;
}
public RequestQueue getRequestQueue() {
if (mRequestQueue == null) {
mRequestQueue = Volley.newRequestQueue(getApplicationContext());
}
return mRequestQueue;
}
public <T> void addToRequestQueue(Request<T> req, String tag) {
req.setTag(TextUtils.isEmpty(tag) ? TAG : tag);
VolleyLog.e("Adding request to queue: %s", req.getUrl());
getRequestQueue().add(req);
}
public <T> void addToRequestQueue(Request<T> req) {
req.setTag(TAG);
getRequestQueue().add(req);
}
public void cancelPendingRequests(Object tag) {
if (mRequestQueue != null) {
mRequestQueue.cancelAll(tag);
}
}
}
在 Activity 中,我尝试用这个 class:
创建简单的请求
final String URL = "http://192.168.1.6/apitest";
JsonObjectRequest req = new JsonObjectRequest(URL, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.e("Response:", response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("Error: ", error.getMessage());
}
});
ApplicationController.getInstance().addToRequestQueue(req);
Logcat 错误:
Caused by: java.lang.NullPointerException
at asrebidaree.ir.asrebidaree.ActivityRegistration.onCreate(ActivityRegistration.java:37)
第 37 行是:ApplicationController.getInstance().addToRequestQueue(req);
代码看起来不错。您必须在 AndroidManifest.xml
中注册应用程序的子类。如果你没有,你的 sInstance
将不会被初始化,因为 Android 不会使用你的应用程序的 sublcass
使用 android Volley
教程我正在创建简单的单例 class 作为 Volley,但是在准备 GET 和 POST 方法后我得到 NullPointerException
错误,我找不到什么错误:
AppControllert Volley
单例 class:
public class ApplicationController extends Application {
public static final String TAG = "VolleyPatterns";
private RequestQueue mRequestQueue;
private static ApplicationController sInstance;
@Override
public void onCreate() {
super.onCreate();
sInstance = this;
}
public static synchronized ApplicationController getInstance() {
return sInstance;
}
public RequestQueue getRequestQueue() {
if (mRequestQueue == null) {
mRequestQueue = Volley.newRequestQueue(getApplicationContext());
}
return mRequestQueue;
}
public <T> void addToRequestQueue(Request<T> req, String tag) {
req.setTag(TextUtils.isEmpty(tag) ? TAG : tag);
VolleyLog.e("Adding request to queue: %s", req.getUrl());
getRequestQueue().add(req);
}
public <T> void addToRequestQueue(Request<T> req) {
req.setTag(TAG);
getRequestQueue().add(req);
}
public void cancelPendingRequests(Object tag) {
if (mRequestQueue != null) {
mRequestQueue.cancelAll(tag);
}
}
}
在 Activity 中,我尝试用这个 class:
创建简单的请求final String URL = "http://192.168.1.6/apitest";
JsonObjectRequest req = new JsonObjectRequest(URL, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.e("Response:", response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("Error: ", error.getMessage());
}
});
ApplicationController.getInstance().addToRequestQueue(req);
Logcat 错误:
Caused by: java.lang.NullPointerException
at asrebidaree.ir.asrebidaree.ActivityRegistration.onCreate(ActivityRegistration.java:37)
第 37 行是:ApplicationController.getInstance().addToRequestQueue(req);
代码看起来不错。您必须在 AndroidManifest.xml
中注册应用程序的子类。如果你没有,你的 sInstance
将不会被初始化,因为 Android 不会使用你的应用程序的 sublcass