Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Kotlin-如何将空值传递到newInstance方法中?_Android_Kotlin - Fatal编程技术网

Android Kotlin-如何将空值传递到newInstance方法中?

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中使用一个伴生对象来实现这一点,因为它是静态的。以下是我到目前为止

我已经使用Kotlin创建了一个片段,您知道如何使用一个方便的静态方法在Java中设置片段args。像这样:

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安全的官方文档: