首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我的JsonObjectRequest不工作?

为什么我的JsonObjectRequest不工作?
EN

Stack Overflow用户
提问于 2015-03-25 12:36:15
回答 6查看 13K关注 0票数 7

我已经摆弄这个东西好几天了。不能正确处理。Android studio不允许我编译这个错误。因此,我有一个应用程序,其中有两个选项卡和两个片段。一个片段称为new,该片段获取json。但是我不能正确地做它。我已经上传了错误的图片和类文件。你能帮帮我吗?

错误:“无法解析构造函数JsonObjectRequest(int,java.lang.String,null.....)

new_fragment.java

代码语言:javascript
运行
复制
public class new_fragment extends Fragment {
    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";

    private String mParam1;
    private String mParam2;
    private VolleySingleton volleySingleton;
    private ImageLoader imageLoader;
    private RequestQueue requestQueue;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() !=null){
            mParam1 = getArguments().getString(ARG_PARAM1);
            mParam2 = getArguments().getString(ARG_PARAM2);
        }
        volleySingleton = VolleySingleton.getsInstance();
        requestQueue = volleySingleton.getRequestQueue();
        RequestQueue requestQueue = VolleySingleton.getsInstance().getRequestQueue();
        JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET,"http://10.0.8.152/json/new.json",null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        System.out.println(response);
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {

                    }
                });
        requestQueue.add(request);
    }

    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedIntanceState) {
        setHasOptionsMenu(true);
        View layout = inflater.inflate(R.layout.new_fragment, container, false);
        return layout;
    }

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        // TODO Auto-generated method stub
        super.onCreateOptionsMenu(menu, inflater);
        inflater.inflate(R.menu.ref_menu, menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // handle item selection
        switch (item.getItemId()) {
            case R.id.refreshico:
                // do s.th.
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

}

VolleySingleton

代码语言:javascript
运行
复制
public class VolleySingleton {
    private static VolleySingleton sInstance = null;
    private ImageLoader mImageLoader;
    private RequestQueue mRequestQueue;
    private VolleySingleton(){
        mRequestQueue = Volley.newRequestQueue(appClass.getAppContext());
        mImageLoader = new ImageLoader(mRequestQueue,new ImageLoader.ImageCache() {
            private LruCache<String, Bitmap> cache = new LruCache<>((int)(Runtime.getRuntime().maxMemory()/1024)/8);

            @Override
            public Bitmap getBitmap(String url) {
                return cache.get(url);
            }

            @Override
            public void putBitmap(String url, Bitmap bitmap) {
                cache.put(url, bitmap);
            }
        });
    }

    public static VolleySingleton getsInstance(){
        if(sInstance==null){
            sInstance = new VolleySingleton();
        }
        return sInstance;
    }

    public RequestQueue getRequestQueue(){
        return mRequestQueue;
    }
    public ImageLoader getImageLoader(){
        return mImageLoader;
    }


}
EN

回答 6

Stack Overflow用户

发布于 2015-03-25 13:42:34

cast (字符串)null。

代码语言:javascript
运行
复制
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET,"http://10.0.8.152/json/new.json",(String)null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        System.out.println(response);
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {

                    }
                });
票数 24
EN

Stack Overflow用户

发布于 2015-03-25 20:24:51

new JsonObjectRequest采用第三个参数作为String requestBody

将null转换为字符串

或者,您可以创建一个空字符串,如String rBody = null;,然后将rBody作为第三个参数进行传递

代码语言:javascript
运行
复制
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET,
                "http://10.0.8.152/json/new.json", (String) null, // here
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        System.out.println(response);
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {

                    }
                });
requestQueue.add(request);
票数 9
EN

Stack Overflow用户

发布于 2016-01-27 05:19:57

对于现在正在尝试实现这一点的每个人:谷歌更改了jsonObjectRequest构造函数:现在您不再支持请求类型,而是首先提供url,然后提供null作为第二个参数,如果您想要get请求的话。例如:

代码语言:javascript
运行
复制
 JsonObjectRequest jsonObjectRequest = new JsonObjectRequest("http://www.aaa.com/getJSON/dummyMeldung.json", null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        try {
                            JSONArray jsonArray = response.getJSONArray("meldung");
                            for (int i = 0; i <= jsonArray.length(); i++) {
                                JSONObject meldung = jsonArray.getJSONObject(i);
                                String comment = meldung.getString("comment");
                                Log.d("ausgabe", comment);
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {

                    }
                });
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29247525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档