如何解决因 Volley post 方法未完成而导致的错误?
How to resolve errors resulting from Volley post method that does not complete?
我的主要活动 class 是
public class MainActivity extends Activity {
private ProgressDialog pDialog;
private static final String TAG = MainActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RequestQueue queue = Volley.newRequestQueue(this);
String url="http://onam.leah.in/android_login_api/register_json.php";
JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.POST,url,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
System.out.println(response);
hideDialog();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
hideDialog();
}
}) {
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("user","swaroop");
return params;
};
};
queue.add(jsObjRequest);
}
private void showDialog() {
if (!pDialog.isShowing())
pDialog.show();
}
private void hideDialog() {
if (pDialog.isShowing())
pDialog.dismiss();
}
}
我尝试将详细信息发送至 url:http://onam.leah.in/android_login_api/register_json.php,null
下面是我的日志猫
Process: harico.jsonexam2, PID: 21185
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.app.ProgressDialog.isShowing()' on a null object reference
at harico.jsonexam2.MainActivity.hideDialog(MainActivity.java:75)
at harico.jsonexam2.MainActivity.access[=12=]0(MainActivity.java:29)
at harico.jsonexam2.MainActivity.onErrorResponse(MainActivity.java:57)
at com.android.volley.Request.deliverError(Request.java:598)
at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:101)
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:5312)
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:901)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
你确定这是正确的url?
url="http://onam.leah.in/android_login_api/register_json.php,null";
最后一部分看起来不正确
pDialog
为空。为 ProgressDialog
.
创建实例
ProgressDialog pDialog = new ProgressDialog(MainActivity.this);
Handler handler = new Handler(); // create instance in onCreate()
...
在回调响应中使用它
handler.post(new Runnable() {
void run() {
hideDialog();
}
});
我的主要活动 class 是
public class MainActivity extends Activity {
private ProgressDialog pDialog;
private static final String TAG = MainActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RequestQueue queue = Volley.newRequestQueue(this);
String url="http://onam.leah.in/android_login_api/register_json.php";
JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.POST,url,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
System.out.println(response);
hideDialog();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
hideDialog();
}
}) {
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("user","swaroop");
return params;
};
};
queue.add(jsObjRequest);
}
private void showDialog() {
if (!pDialog.isShowing())
pDialog.show();
}
private void hideDialog() {
if (pDialog.isShowing())
pDialog.dismiss();
}
}
我尝试将详细信息发送至 url:http://onam.leah.in/android_login_api/register_json.php,null
下面是我的日志猫
Process: harico.jsonexam2, PID: 21185 java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.app.ProgressDialog.isShowing()' on a null object reference at harico.jsonexam2.MainActivity.hideDialog(MainActivity.java:75) at harico.jsonexam2.MainActivity.access[=12=]0(MainActivity.java:29) at harico.jsonexam2.MainActivity.onErrorResponse(MainActivity.java:57) at com.android.volley.Request.deliverError(Request.java:598) at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:101) 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:5312) 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:901) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
你确定这是正确的url?
url="http://onam.leah.in/android_login_api/register_json.php,null";
最后一部分看起来不正确
pDialog
为空。为 ProgressDialog
.
ProgressDialog pDialog = new ProgressDialog(MainActivity.this);
Handler handler = new Handler(); // create instance in onCreate()
...
在回调响应中使用它
handler.post(new Runnable() {
void run() {
hideDialog();
}
});