【发布时间】:2018-06-17 03:30:13
【问题描述】:
我已经使用 Kotlin 创建了一个片段,并且您知道如何在 Java 中使用一种方便的静态方法来设置片段参数。像这样:
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 注释,我将被允许为捆绑传递 null,但是当我调用 MyFragment.newInstance(null) 时,我不断收到以下错误:
致命异常:主要 进程:com.mobile.MyApp.labs,PID:5758 java.lang.IllegalArgumentException:指定为非空的参数为空:方法 kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull,参数 b 在 com.mobile.MyApp.ui.cart.fragments.MyFragment$Companion.newInstance(MyFragment.kt:0) 在 com.mobile.MyApp.ui.cart.fragments.CartDetailsFragment.onCtaClicked(CartDetailsFragment.java:521) 在 com.mobile.MyApp.ui.cart.fragments.CartDetailsFragment_ViewBinding$1.doClick(CartDetailsFragment_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?
【问题讨论】:
-
这在我的情况下不起作用。就像我传入 null 一样,我仍然希望创建并返回片段。