2013-04-26 5 views
5

Я не понимаю, почему это происходит. У меня есть следующий код:Android: int, который в DialogInterface.OnClickListener() равен -1

AlertDialog.Builder builder = new AlertDialog.Builder(SettingsActivityNew.this); 

builder.setTitle("Title"); 
builder.setSingleChoiceItems(R.array.example_arrays, 1, null);    
builder.setNegativeButton("Cancel", null); 
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int which) { 
     Toast.makeText(SettingsActivityNew.this, "which: " + which, Toast.LENGTH_LONG).show(); 
    } 
}); 
builder.show(); 

По какой-то странной причине, int, который дает мне -1. Почему это происходит?

ответ

12

Из док:

Parameters 
dialog The dialog that received the click. 
which The button that was clicked (e.g. BUTTON1) or the position of the item clicked. 


BUTTON_POSITIVE:

public static final int BUTTON_POSITIVE 

Added in API level 3 
The identifier for the positive button. 

Constant Value: -1 (0xffffffff) 

Так что это не странно, но совершенно нормально. Вы получаете -1 каждый раз, потому что вы нажали на positiveButton вашего диалога :)

+0

Ох, ладно, спасибо. Тогда я понял это неправильно, я думал, что это возвращение позиции выбранного элемента в список, который отображается в диалоговом окне, но я уверен, что мне нужно что-то еще для этого. – Xander

+0

Вы бы предположили, что 'which' будет id, как в' ((AlertDialog) getDialog()). GetButton (DialogInterface.BUTTON_POSITIVE) .getId() '(по крайней мере, в моем случае). Но, похоже, что «DialogInterface.BUTTON_POSITIVE» - это то, что передается вместо этого. –

Смежные вопросы