【问题标题】:Android: ArrayIndexOutOfBoundsException when passing the valuesAndroid:传递值时出现ArrayIndexOutOfBoundsException
【发布时间】:2013-02-26 10:39:04
【问题描述】:

当我尝试传递纬度和对数时,我得到了这个 ArrayIndexOutOfBoundsException

private String getId(String facebookUser,String lat, String expiryMinute, String messageId, String message, String referenceKey, String placeId) {

        lang = Utils.formatDouble(Constants.searchLocation.getLongitude());
        lat = Utils.formatDouble(Constants.searchLocation.getLatitude());
        String traceId = null;
        HttpClient client = new HttpClient();
        PostMethod post = null;
        try {

            NameValuePair[] params = null;
            NameValuePair param = new NameValuePair();

            if(Constants.isMessageForPosting){
                params = new NameValuePair[6];
                param.setName("gadget");
                param.setValue("gettraceid");
                params[0] = param;

                if(messageId == null || messageId.trim().isEmpty()){
                    messageId = "1";
                }
            }else{
                params = new NameValuePair[8];
                param.setName("gadget");
                param.setValue("getrequestid");
                params[0] = param;
                if(messageId == null || messageId.trim().isEmpty()){
                    messageId = "2";
                }
            }

            if(expiryMinute == null || expiryMinute.trim().isEmpty()){
                expiryMinute = "0";
            }

            param = new NameValuePair();
            param.setName("fbuserid");
            param.setValue(facebookUser);
            params[1] = param;


            param = new NameValuePair();
            param.setName("userid");
            param.setValue(Constants.USERID);
            params[2] = param;

            param.setName("expiryminute");
            param.setValue(expiryMinute);
            params[3] = param;

            param.setName("msgid");
            param.setValue(messageId);
            params[4] = param;

            param = new NameValuePair();
            param.setName("msg");
            param.setValue(message);
            params[5] = param;

            param = new NameValuePair();
            param.setName("lat");
            param.setValue(lat);
            params[9] = param;

            param = new NameValuePair();
            param.setName("lang");
            param.setValue(lang);
            params[10] = param;
        */  
            if(!Constants.isMessageForPosting){
                param = new NameValuePair();
                param.setName("referencekey");
                param.setValue(referenceKey);
                params[6] = param;

                param = new NameValuePair();
                param.setName("placeid");
                param.setValue(placeId);
                params[7] = param;
            }

            post.setQueryString(params);
        int statusCode = client.executeMethod(post);
            traceId = post.getResponseBodyAsString();

        } catch (Exception e) {
            Log.e(TAG, "For Facebook Trace Id:", e);

        } finally {
            post.releaseConnection();
            post = null;
        }
        return Id;
    }

下面是我的堆栈跟踪

02-26 15:39:52.131: E/MainFragment(23117): For Facebook Trace Id:
02-26 15:39:52.131: E/MainFragment(23117): java.lang.ArrayIndexOutOfBoundsException: length=6; index=9
02-26 15:39:52.131: E/MainFragment(23117):  at org.appright.mycity.activity.MainFragment.getTraceId(MainFragment.java:291)
02-26 15:39:52.131: E/MainFragment(23117):  at org.appright.mycity.activity.MainFragment.access$7(MainFragment.java:225)
02-26 15:39:52.131: E/MainFragment(23117):  at org.appright.mycity.activity.MainFragment$PostFBMessage.doInBackground(MainFragment.java:553)
02-26 15:39:52.131: E/MainFragment(23117):  at org.appright.mycity.activity.MainFragment$PostFBMessage.doInBackground(MainFragment.java:1)

感谢任何帮助。

【问题讨论】:

    标签: android indexoutofboundsexception


    【解决方案1】:

    问题是您正在声明具有 6 个元素或 8 个元素的 params 变量。但稍后您正在访问第 8 和第 9 个元素,这是错误的。

    解决办法:

    您应该使用 10 个元素的静态数组大小或使用 ArrayList 类。

    【讨论】:

    • 你能告诉我如何通过我的经纬度吗?
    • 你在哪里传递它们?
    • 我的意思是说如何将这个纬度作为参数传递
    • 很简单,我假设现在您将它作为参数传递,所以做一件事,在您的 getID() 方法中创建一个新参数,并创建一个大小为 2 的新静态数组在这个类文件中,并在调用 getID() 方法时传递该数组
    • 对不起,但我很困惑..因为你可以看到我将纬度传递给我的 getid() 方法并将参数传递为 param = new NameValuePair();参数.setName("lat");参数.setValue(lat);参数 [9] = 参数;这是错的吗?
    猜你喜欢
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    • 2011-08-05
    • 2014-12-27
    • 2014-11-25
    • 2015-12-22
    • 2021-12-19
    • 2017-05-06
    相关资源
    最近更新 更多