Reputation: 135
I've got little problem with String array. In one class I've got simple listview with multiple choice. At the end each choice is put to String array and share to next class.
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);
In ReadComments class i've made simple method:
public String[] tablica(){
Bundle b = getIntent().getExtras();
String[] resultArr = b.getStringArray("selectedItems");
return resultArr;
}
which bring back my data. When I put it to another method in the same class:
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();
}
}}
I've got ArrayIndexOutOfBoundsException. Pleasy help me it's a simple problem but very annoying
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)
P.S. 235 line show:
if(resultArr[x] == nazwa){
Upvotes: 0
Views: 8838
Reputation: 3794
Replace
for(x=0;x<=resultArr.length;x++)
With
for(x=0;x<resultArr.length;x++)
Why?
An array with the length of 3 has indices 0,1,2. In your case, the problem occurs, because you are trying to call resultArr[3]
if the length is 3.
Upvotes: 6