【问题标题】:Kotlin - how to pass in null value into fragments newInstance method?Kotlin - 如何将空值传递给片段 newInstance 方法?
【发布时间】: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

【问题讨论】:

标签: android kotlin


【解决方案1】:

在 Kotlin 中,您不传递 @Nullable,而是在类型名称后面写一个问号 (?) 以将其标记为可为空。

fun newInstance(b: Bundle?): MyFragment

【讨论】:

【解决方案2】:

Kotlin 提供 (?) FOR 处理 null.have 看看

companion object {
    fun newInstance( b: Bundle?): MyFragment {
        val frag = MyFragment()
        frag.arguments = b
        return frag
    }
}

希望对你有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-16
    • 2021-07-06
    • 1970-01-01
    相关资源
    最近更新 更多