Android Kotlin-如何将空值传递到newInstance方法中?
我已经使用Kotlin创建了一个片段,您知道如何使用一个方便的静态方法在Java中设置片段args。像这样:Android Kotlin-如何将空值传递到newInstance方法中?,android,kotlin,Android,Kotlin,我已经使用Kotlin创建了一个片段,您知道如何使用一个方便的静态方法在Java中设置片段args。像这样: public static MyFragment newInstance(Bundle args){ MyFragment fragment = new MyFragment(); fragment.setArguments(args); return fragment; } 我试图在Kotlin中使用一个伴生对象来实现这一点,因为它是静态的。以下是我到目前为止
public static MyFragment newInstance(Bundle args){
MyFragment fragment = new MyFragment();
fragment.setArguments(args);
return fragment;
}
我试图在Kotlin中使用一个伴生对象来实现这一点,因为它是静态的。以下是我到目前为止收集的资料:
companion object {
fun newInstance(@Nullable b: Bundle): MyFragment {
val frag = MyFragment()
frag.arguments = b
return frag
}
}
我在想,如果我使用@Nullable
注释,我将被允许为bundle传递null,但是当我调用MyFragment.newInstance(null)
时,我不断得到以下错误:
致命异常:主
进程:com.mobile.MyApp.labs,PID:5758
java.lang.IllegalArgumentException:指定为非null的参数为null:方法kotlin.jvm.internal.Intrinsics.checkParametersNotNull,参数b
位于com.mobile.MyApp.ui.cart.fragments.MyFragment$Companion.newInstance(MyFragment.kt:0)
位于com.mobile.MyApp.ui.cart.fragments.CartDetailsFragment.onctClicked(CartDetailsFragment.java:521)
在com.mobile.MyApp.ui.cart.fragments.CartDetailsFragments\u ViewBinding$1.doClick(cartDetailsFragments\u ViewBinding.java:66)
在butterknife.internal.DebouncingOnClickListener.onClick(DebouncingOnClickListener.java:22)
在android.view.view.performClick上(view.java:6256)
在android.view.view$PerformClick.run(view.java:24701)
位于android.os.Handler.handleCallback(Handler.java:789)
位于android.os.Handler.dispatchMessage(Handler.java:98)
位于android.os.Looper.loop(Looper.java:164)
位于android.app.ActivityThread.main(ActivityThread.java:6541)
位于java.lang.reflect.Method.invoke(本机方法)
在com.android.internal.os.Zygote$MethodAndArgsCaller.run上(Zygote.java:240)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
如何传入
null
?在Kotlin中,您不会传入@Nullable
,而是在类型名称后面写一个问号(?
)以将其标记为null
fun newInstance(b: Bundle?): MyFragment
在Kotlin中,您不会传递
@Nullable
,而是在类型名称后面写一个问号(?
)以将其标记为Nullable
fun newInstance(b: Bundle?): MyFragment
Kotlin提供(?)用于处理null
。请查看
companion object {
fun newInstance( b: Bundle?): MyFragment {
val frag = MyFragment()
frag.arguments = b
return frag
}
}
希望它能帮助您。Kotlin提供(?)处理null
。请查看
companion object {
fun newInstance( b: Bundle?): MyFragment {
val frag = MyFragment()
frag.arguments = b
return frag
}
}
希望对您有所帮助。这对我来说不起作用。如果我传入null,我仍然希望创建并返回片段。这在我的情况下不起作用。如果我传入null,我仍然希望创建并返回片段。另外,请查看Kotlin中关于null安全的官方文档:另外,请查看Kotlin中关于null安全的官方文档: