| 我先使用人家的办法,重写了一个方法,通过map提交,json返回、 RequestQueue mQueue = Volley.newRequestQueue(getBaseContext()); Request<JSONObject> request = new HuaguHttpPost(Method.POST, "http://192.168.1.118/1.php", new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { Log.i("json", response.toString()); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { // TODO Auto-generated method stub Log.i("json",error.getMessage(),error); } }, map); mQueue.add(request); 问题在于: 
public function Func{
        public static JSONObject json;
	public static JSONObject postMap(Map<String, String> map, final Activity act){
	RequestQueue mQueue = Volley.newRequestQueue(act);
        Request<JSONObject> request = new HuaguHttpPost(Method.POST, Constant.ServerURL, new Response.Listener<JSONObject>() {
			@Override
			public void onResponse(JSONObject response) {
				json = response;
			}
		}, new Response.ErrorListener() {
			@Override
			public void onErrorResponse(VolleyError error) {
				Log.i("json",error.getMessage(),error);
				try {
					json = new JSONObject().put("error", 1);
				} catch (JSONException e) {
					e.printStackTrace();
				}
				Toast.makeText(act, "服务器连接错误,请检查网络连接", Toast.LENGTH_LONG).show();
			}
		}, map);
        
        mQueue.add(request);
               //如果在这里输出json.tostring()  一定会报空指针。
		return json;//可是这里好像没有返回。
	}
}请问  怎样写才可以让外部调用能接收到json呢?为什么我在最下面写log输出的时候会空指针呢? | |
|  | 
 mQueue.add(request); 请求和返回都是需要时间的,你刚添加进去,请求刚开始,还不知请求是否成功或返回,你就retun了,json当然是空。 | 
|  | 那我应该如何处理啊? | 
|  | 你这也一说我也觉得好有道理。可是好像不知道有什么办法处理。 | 
|  | 
我c前也封装过,不过,能使用的情况有限,所以就放弃了。 | 
|  | 那你平时是怎么用的呢? 就那样一起写2个listener吗? | 
|  | 
用你说的这样用过,不过,后来用的少了。 | 
|  | 啊 大牛 求告诉我怎么搞啊? 我是新手,昨天才下的volly 难道有更无脑的办法吗? | 
|  | 
基本的网络请求无非使用httpconnection或httpclient,写一个工具类,里面包含常用的get或post请求的方法,返回请求结果。 | 
|  | 你的意思是你是自己写的没用框架。 | 
|  | 
是那意思,又不是多复杂的事。框架的使用达不到要求,只能选择性使用了。 | 
|  | 
自己重新封装 StringRequest;简单实用。我最近在在搞一个基于fastjson+volley;非常好用;支持复杂的json, 可以非常方便的json javabean转换;后面会开源出来;可以关注一下 | 
|  | 
 我只是一个使用拿项目直接做,学习安卓没一个星期的新手。、 | 
|  10分 | 
我c前也封装过,不过,能使用的情况有限,所以就放弃了。 | 
|  | 
回调啊,Handler什么的撒 | 
|  30分 | 
JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, url, object, new Listener<JSONObject>() { @Override @Override | 
|  | 
很详细~ | 
|  | 
volley之所以为框架,就是因为他已经给你处理好了很多事情,你是用他原本的请求,他会在收到返回数据后调用你重写的onResponse,如果网络异常或错误,则是调用onErrorResponse,也就是说你只需要在这两个方法里写你对应的动作就可以了 | 
|  | 
大家都来学习了吧。 | 
|  | 
致敬……. | 
