Android String数组长度和循环

bak*_*sek 0 android android-intent android-layout

我对String数组没什么问题.在一个课程中,我有简单的列表视图,有多种选择.最后,每个选项都放在String数组中并共享给下一个类.

SparseBooleanArray checked = listView.getCheckedItemPositions();
        ArrayList<String> selectedItems = new ArrayList<String>();
    for (int i = 0; i < checked.size(); i++) {
        // Item position in adapter
        int position = checked.keyAt(i);
        // Add sport if it is checked i.e.) == TRUE!
        if (checked.valueAt(i))
            selectedItems.add(adapter.getItem(position));
    }

    String[] outputStrArr = new String[selectedItems.size()];

    for (int i = 0; i < selectedItems.size(); i++) {
        outputStrArr[i] = selectedItems.get(i);
    }

   Intent intent = new Intent(getApplicationContext(),
            ReadComments.class);

    // Create a bundle object
    Bundle b = new Bundle();
    b.putStringArray("selectedItems", outputStrArr);

    // Add the bundle to the intent.
    intent.putExtras(b);

    // start the ResultActivity
    startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

在ReadComments类中,我做了一个简单的方法:

public String[] tablica(){
        Bundle b = getIntent().getExtras();
        String[] resultArr = b.getStringArray("selectedItems");
        return resultArr;

    }
Run Code Online (Sandbox Code Playgroud)

这会带回我的数据.当我把它放到同一个类中的另一个方法时:

        for(x=0;x<=resultArr.length;x++){
            if(resultArr[x] == nazwa){
                lat = mListaMar.get(TAG_SZER);
                longi = mListaMar.get(TAG_DLUG);
                // String laty = Float.toString(lat);
                name = mListaMar.get(TAG_MARKET);
                ustawMape();

            }
        }}
Run Code Online (Sandbox Code Playgroud)

我有ArrayIndexOutOfBoundsException.Pleasy帮助我这是一个简单的问题,但非常烦人

12-22 13:23:50.055: E/AndroidRuntime(8735): FATAL EXCEPTION: main
12-22 13:23:50.055: E/AndroidRuntime(8735): java.lang.ArrayIndexOutOfBoundsException
12-22 13:23:50.055: E/AndroidRuntime(8735):     at com.flex.sklepik.ReadComments.updateList(ReadComments.java:235)
12-22 13:23:50.055: E/AndroidRuntime(8735):     at com.flex.sklepik.ReadComments$LoadComments.onPostExecute(ReadComments.java:318)
12-22 13:23:50.055: E/AndroidRuntime(8735):     at com.flex.sklepik.ReadComments$LoadComments.onPostExecute(ReadComments.java:1)
12-22 13:23:50.055: E/AndroidRuntime(8735):     at android.os.AsyncTask.finish(AsyncTask.java:417)
12-22 13:23:50.055: E/AndroidRuntime(8735):     at android.os.AsyncTask.access$300(AsyncTask.java:127)
12-22 13:23:50.055: E/AndroidRuntime(8735):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429)
12-22 13:23:50.055: E/AndroidRuntime(8735):     at android.os.Handler.dispatchMessage(Handler.java:99)
12-22 13:23:50.055: E/AndroidRuntime(8735):     at android.os.Looper.loop(Looper.java:130)
12-22 13:23:50.055: E/AndroidRuntime(8735):     at android.app.ActivityThread.main(ActivityThread.java:3701)
12-22 13:23:50.055: E/AndroidRuntime(8735):     at java.lang.reflect.Method.invokeNative(Native Method)
12-22 13:23:50.055: E/AndroidRuntime(8735):     at java.lang.reflect.Method.invoke(Method.java:507)
12-22 13:23:50.055: E/AndroidRuntime(8735):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
12-22 13:23:50.055: E/AndroidRuntime(8735):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:624)
12-22 13:23:50.055: E/AndroidRuntime(8735):     at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

PS 235线显示:

if(resultArr[x] == nazwa){
Run Code Online (Sandbox Code Playgroud)

Mal*_*aKa 6

更换

 for(x=0;x<=resultArr.length;x++)
Run Code Online (Sandbox Code Playgroud)

 for(x=0;x<resultArr.length;x++)
Run Code Online (Sandbox Code Playgroud)

为什么?长度为3的数组的索引为0,1,2.在您的情况下,出现问题,因为resultArr[3]如果长度为3 ,您正在尝试调用.