我创建了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() {
但是我希望最后2个参数是可选的。
我该如何实现?
我无法设置neutralButtonListener: DialogInterface.OnClickListener = null
,因为DialogInterface.OnClickListener
是非空类型。
答案 0 :(得分:2)
您可以尝试
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() {
答案 1 :(得分:1)
通常,您会提供无操作或空值实现,例如
neutralButtonText: String = ""
neutralButtonListener: OnClickListener = OnClickListener {}
但是在您的用例中,您绝对不能使用构造函数参数!
可以从系统重新创建片段,并且需要默认的构造函数。
您需要通过communicate with the activity
or parentFragment
来实现所需的接口。
答案 2 :(得分:1)
检查一下
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() { }
答案 3 :(得分:1)
救援的默认参数。
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()
基本上,Kotlin将针对可能的每种参数组合生成多种方法。
如果在构造函数中包含@JvmOverloard
注释以允许在Java中使用相同的内容,可能还会更好。