[英]How to create a kotlin live template for newInstance Fragments using Android studio
[英]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.