3

私はこれらで設定された私のAndroidスタジオを持っています:

    classpath "me.tatarka:gradle-retrolambda:3.2.2"
    classpath 'me.tatarka.retrolambda.projectlombok:lombok.ast:0.2.3.a2'

そして、ラムダを使用して、何ができるかできないかを調べようとしています。

次のコードを実行したとき:

    alertDialogBuilder.setPositiveButton("Okay", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.cancel();
        }
    });

IDEnew DialogInterface.OnClickListener()は、ラムダに置き換えることができるというメッセージをグレー表示しました。多かれ少なかれ何もありません。いくつかの を調べた後。私は次のようなことを試しました:

    alertDialogBuilder.setPositiveButton("Okay", (DialogInterface dialog) -> {
            dialog.cancel();
    });

これらも:

alertDialogBuilder.setNegativeButton((DialogInterface) d -> d.cancel());

エラーの中で:

エラー:(99, 64) エラー: 型に互換性がありません: DialogInterface は機能的なインターフェイスではありません オーバーライドしていない複数の抽象メソッドがインターフェイス DialogInterface に見つかりました

この場合、ラムダをどのように使用すればよいですか?

4

1 に答える 1

11

onClickは2つのパラメーターを取り、あなたの例では1つしか表示されません。whichパラメータをラムダに必ず含めてください。

new AlertDialog.Builder(this).setPositiveButton("Okay", 
                                  (dialog, which) -> dialog.cancel());
于 2015-09-17T06:12:40.443 に答える