diff --git a/android/src/main/java/com/actionsheet/ActionSheetModule.java b/android/src/main/java/com/actionsheet/ActionSheetModule.java index b4d0e0b..73867e6 100644 --- a/android/src/main/java/com/actionsheet/ActionSheetModule.java +++ b/android/src/main/java/com/actionsheet/ActionSheetModule.java @@ -43,11 +43,18 @@ public void showActionSheetWithOptions(final ReadableMap options, final Callback final List titles = new ArrayList(); + int _cancelInde = 99; + if (options.hasKey("cancelButtonIndex")) { + _cancelInde = options.getInt("cancelButtonIndex"); + } + final int cancelIndex = _cancelInde; if (options.hasKey("options")) { ReadableArray customButtons = options.getArray("options"); for (int i = 0; i < customButtons.size(); i++) { int currentIndex = titles.size(); - titles.add(currentIndex, customButtons.getString(i)); + if (i != cancelIndex) { + titles.add(currentIndex, customButtons.getString(i)); + } } } @@ -60,7 +67,11 @@ public void showActionSheetWithOptions(final ReadableMap options, final Callback builder.setAdapter(adapter, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int index) { - callback.invoke(index); + if (index < cancelIndex) { + callback.invoke(index); + } else { + callback.invoke(index + 1); + } } }); @@ -73,7 +84,6 @@ public void onClick(DialogInterface dialog, int index) { @Override public void onCancel(DialogInterface dialog) { dialog.dismiss(); - callback.invoke(); } }); dialog.show();