2015-09-19 30 views
0

我在我的程序中使用AlertDialog,每當我做水龍頭上的任何對話框中的項目,總是讓:java.lang.ArrayIndexOutOfBoundsException:length = 12;指數= -1

java.lang.ArrayIndexOutOfBoundsException: length=12; index=-1 

這是我實現:

 builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 

      Log.d("which::--", String.valueOf(which)); 

     }); 
+0

後的全部源代碼 – sasikumar

+0

@sasikumar但爲什麼你需要完整的源代碼? – Oreo

+0

ArrayIndexOutOfBoundsException所以你在數組中犯了錯誤..爲什麼需要參考代碼 – sasikumar

回答

0

根據文檔,「which」參數表示「被點擊的按鈕(例如BUTTON1)或被點擊的項目的位置。」

在這裏你把你的監聽器(DialogInterface.OnClickListener())放在你的PositiveButton上,所以「which」將總是返回BUTTON1或者BUTTON_POSITIVE(見這裏http://developer.android.com/reference/android/content/DialogInterface.html)。

必須使用功能

setSingleChoiceItems (CharSequence[] items, int checkedItem, DialogInterface.OnClickListener listener)例如或者setMultiChoiceItems (CharSequence[] items, boolean[] checkedItems, DialogInterface.OnMultiChoiceClickListener listener)如果要允許多項目的選擇把你的聽衆的名單上。

1

下面是簡單的解決方案,使竊聽項目的index or position

int selectedPosition = ((AlertDialog)dialog).getListView().getCheckedItemPosition(); 
相關問題