簡體   English   中英

Kotlin-如何將空值傳遞給片段newInstance方法?

[英]Kotlin - how to pass in null value into fragments newInstance method?

我使用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批注,那么我將被允許為包傳遞null,但是當我調用MyFragment.newInstance(null)時,我會不斷收到以下錯誤MyFragment.newInstance(null)

致命異常:主進程:com.mobile.MyApp.labs,PID:5758 java.lang.IllegalArgumentException:指定為非null的參數為null:方法kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull,com.mobile的參數b。 com.mobile.MyApp上的MyApp.ui.cart.fragments.MyFragment $ Companion.newInstance(MyFragment.kt:0)位於com.mobile.MyApp.ui.cart.fragments.CartDetailsFragment.onCtaClicked(CartDetailsFragment.java:521)。 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。 android.os.Handler.dispatchMessage(Handler.java:98)的android.os.Handler.handleCallback(Handler.java:789)的view.View $ PerformClick.run(View.java:24701)android.os.Looper的android.os.Handler.dispatchMessage(Handler.java:98) .loop(Looper.java:164)在android.app.ActivityThread.main(ActivityThread.java:6541)在com.andro的java.lang.reflect.Method.invoke(本機方法) id.internal.os.Zygote $ MethodAndArgsCaller.run(Zygote.java:240)在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

如何傳遞null

在Kotlin中,您不會傳遞@Nullable而是在類型名稱后面寫一個問號( ? )以將其標記為可為空。

fun newInstance(b: Bundle?): MyFragment

Kotlin提供(?)用於處理null .have外觀

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

希望對您有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM