向 Android Kotlin 类添加可选参数

Zor*_*gan 7 android kotlin

我创建了一个扩展DialogFragment()

class AlertDialogFragment(context: Context, 
                          val positiveButtonText: String, 
                          val positiveButtonListener: DialogInterface.OnClickListener,
                          val negativeButtonText: String, 
                          val negativeButtonListener: DialogInterface.OnClickListener,  
                          neutralButtonText: String, 
                          neutralButtonListener: DialogInterface.OnClickListener
                          ) : DialogFragment() {
Run Code Online (Sandbox Code Playgroud)

但是我希望最后两个参数是可选的。

我怎样才能做到这一点?

我无法设置,neutralButtonListener: DialogInterface.OnClickListener = null因为DialogInterface.OnClickListener是非空类型。

shk*_*der 7

救援的默认参数。

class AlertDialogFragment(
    context: Context,
    val positiveButtonText: String,
    val positiveButtonListener: DialogInterface.OnClickListener,
    val negativeButtonText: String,
    val negativeButtonListener: DialogInterface.OnClickListener, 
    neutralButtonText: String = "",
    neutralButtonListener: DialogInterface.OnClickListener = OnClickListener {}
) : DialogFragment()
Run Code Online (Sandbox Code Playgroud)

基本上,Kotlin 会为每种可能的参数组合生成多种方法。

如果@JvmOverloard在构造函数中包含注释以在 Java 中允许相同的事情也可能更好。


Lok*_*sai 5

看一下这个

class AlertDialogFragment(context: Context, val positiveButtonText: String, val positiveButtonListener: DialogInterface.OnClickListener,
                      val negativeButtonText: String, val negativeButtonListener: DialogInterface.OnClickListener, neutralButtonText: String = "", neutralButtonListener: DialogInterface.OnClickListener?=null) : DialogFragment() { }
Run Code Online (Sandbox Code Playgroud)