2013-04-26 6 views
5

Nie rozumiem, dlaczego tak się dzieje. Mam następujący kod:Android: int, który w DialogInterface.OnClickListener() to -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(); 

Z jakiegoś dziwnego powodu, int, który daje mi -1. Dlaczego to się dzieje?

Odpowiedz

12

Od doc:

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) 

Więc to nie jest dziwne, ale całkowicie normalne. Otrzymujesz -1 za każdym razem, ponieważ kliknąłeś na positiveButton twojego okna dialogowego :)

+0

Ooh, ok, dzięki. Wtedy źle to zrozumiałem, myślałem, że jest to pozycja zwrotna wybranego elementu na liście, które wyświetla okno dialogowe, ale założę się, że potrzebuję czegoś innego. – Xander

+0

Można by zakładać, że "który" będzie id, jak w '((AlertDialog) getDialog()). GetButton (DialogInterface.BUTTON_POSITIVE) .getId()' (w moim przypadku co najmniej). Ale wydaje się, że zamiast tego przekazywane jest 'DialogInterface.BUTTON_POSITIVE'. –