私は Android でいくつかの作業を行っていて、それで Retrolambda をテストしたいと考えていました。しかし、残念ながら私は問題に遭遇しました。
Consumer をパラメーターとして受け取る Dialog クラスがあります。
public class AuthDialog extends Dialog {
public static final String SERVER_URL = "http://cohhgas.ddns.net/auth";
private Consumer<UserCredentials> onSuccess;
public AuthDialog(Context context, Consumer<UserCredentials> onSuccess) {
super(context);
this.onSuccess = onSuccess;
}
}
そして、私はそれを使用するアクティビティを持っています:
public class MainActivity extends AppCompatActivity {
public static final String CREDENTIALS = "sharedPrefsCredentials";
GiveAway giveAway;
SharedPreferences sharedpreferences;
public MainActivity() {
EventBus.getDefault().register(this);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final AuthDialog auth_dialog;
auth_dialog = new AuthDialog(MainActivity.this, userCredentials -> Log.d("cool", "works"));
auth_dialog.show();
TextView textView = new TextView(MainActivity.this);
textView.setOnClickListener((view) -> {
});
}
}
しかし、AuthDialog を開始する行で例外がスローされます。ログは次のとおりです。
Process: io.github.hajto.cohhcarnagegiveawayclient, PID: 3687
java.lang.NoClassDefFoundError: io.github.hajto.cohhcarnagegiveawayclient.activites.MainActivity$$Lambda$1
at io.github.hajto.cohhcarnagegiveawayclient.activites.MainActivity.onCreate(MainActivity.java:56)
at android.app.Activity.performCreate(Activity.java:6013)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2359)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2466)
at android.app.ActivityThread.access$1200(ActivityThread.java:152)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1341)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5538)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
最も興味深いのは、その行を削除すると、onClick リスナーは次のラムダと議論しなくなります。