2015-06-10 17 views
28

Zaimplementowałem standard AlertDialog z normalnymi negatywnymi i pozytywnymi odbiornikami kliknięć. Gdy zadzwoniłem pod numer new DialogInterface.OnClickListener(), wyświetlił mi się komunikat: Anonymous new DialogInterface.OnClickListener() can be replaced with lambda. Wiem, że to nie jest błąd, czy coś wielkiego, ale czym dokładnie jest ta sugestia i co mogę z tym zrobić? Niewielka pomoc byłaby doceniona!Listener można zastąpić wartością lambda

EDIT

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
builder.setPositiveButton("Text", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     // do something here 
    } 
}); 

Android Studio V1.2.1.1 compileSdkVersion 22 buildToolsVersion "22.0.0" minSdkVersion 14 targetSdkVersion 22

+0

mógłbyś dodać jakąś część kodu przy użyciu tego? – Random

+1

przeciwko której wersji Androida kompilujesz? – Blackbelt

Odpowiedz

58

Oznacza to, że można skrócić swój kod:

przykładem onClickListener()bez lambda:

mButton.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     // do something here 
    } 
}); 

może być przepisany z lambda:

mButton.setOnClickListener((View v) -> { 
    // do something here 
}); 

To ten sam kod. Jest to przydatne, gdy używasz wielu słuchaczy lub podczas pisania kodu bez IDE. , aby uzyskać więcej informacji, sprawdź this

Mam nadzieję, że odpowiedź na twoje pytanie.

+6

Pamiętaj tylko, że lambda to funkcja Java 8, która nie jest obsługiwana w systemie Android. Jeśli podoba Ci się ta funkcja, użyj retrolambda - https://github.com/evant/gradle-retrolambda – rwojcik

+0

Dziękuję za odpowiedź. To pomaga. –

+2

@rwojcik Lambda jest obsługiwany w systemie Android – portfoliobuilder

1

Jest to tak proste, jak:

button.setOnClickListener(view -> username = textView.getText()); 
+0

To działa na Java 8? –

+0

@M Hornbacher Tak – Mark

Powiązane problemy