2015-06-10 3 views
28

Я внедрил AlertDialog с нормальным отрицательным и положительным нажатием кнопки для прослушивания. Когда я позвонил new DialogInterface.OnClickListener(), он показывал мне предложение: Anonymous new DialogInterface.OnClickListener() can be replaced with 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

Не могли бы вы добавить какую-то часть вашего кода с помощью этого? – Random

+1

против какой версии Android вы компилируете? – Blackbelt

ответ

58

Это означает, что вы можете сократить ваш код:

пример onClickListener()без лямбда:

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

можно переписать с лямбда:

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

Это тот же код. Это полезно при использовании большого количества слушателей или при написании кода без IDE. для получения дополнительной информации this

Надеюсь, что это ответит на ваш вопрос.

+6

Просто помните, что лямбда - это функция Java 8, которая не поддерживается в android. Если вам нравится эта функция, используйте retrolambda - https://github.com/event/gradle-retrolambda – rwojcik

+0

Спасибо за ваш ответ. Помогает. –

+2

@rwojcik Lambda поддерживается в Android – portfoliobuilder

1

Его так просто, как это:

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

Это работает на Java 8? –

+0

@M Hornbacher Да – Mark

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