Android:传递值时出现 ArrayIndexOutOfBoundsException

标签 android indexoutofboundsexception

当我尝试传递纬度和经纬度时出现此 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)

感谢任何帮助。

最佳答案

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

解决方案:

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

关于Android:传递值时出现 ArrayIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15086931/

相关文章:

android - 在 Android 中 - 如何使用 ClickableSpan 仅注册长按

java - 安卓Java : Choose dynamically a subtype class

Android 发布崩溃并出现异常 net.sqlcipher.database.SQLiteException

android - 如何在 AppCompat 中获取操作栏标题作为 TextView?

Java:从文本文件导入到 ArrayList - 越界错误

arrays - Swift 3/4 - 仅在所需的 tableView 单元格中填充数据

android - 从后台服务估计信标区域检测

MergeSort算法中的Java IndexOutOfBoundsException

android - ListView 中的 OutOfBoundsException

Java-在数组中存储字符串的字符