My OrdersFragment has one nullable argument called Option:
<argument
android:name="option"
app:argType="string"
app:nullable="true" />
To work with nullable args I have declared a variable of this way above of the onViewCreated method
private val args : OrdersFragmentArgs? by navArgs()
And inside the onViewCreated of this fragment I have:
args?.let {
if(it.option.equals("Completada")){
getCompletedOrders()
}else if (it.option.equals("Cancelada")){
getCanceledOrders()
}
}
Then when I compile the app and I went to the ordesFragment the app got crash:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.elrestaurante, PID: 3388
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:581)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at androidx.navigation.NavArgsLazy.getValue(NavArgsLazy.kt:54)
at androidx.navigation.NavArgsLazy.getValue(NavArgsLazy.kt:35)
at com.example.elrestaurante.ui.orders.OrdersFragment.getArgs(OrdersFragment.kt:62)
at com.example.elrestaurante.ui.orders.OrdersFragment.onViewCreated(OrdersFragment.kt:83)
at androidx.fragment.app.Fragment.performViewCreated(Fragment.java:3128)
at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:552)
at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:261)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1890)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1814)
at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1751)
at androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:538)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:226)
at android.os.Looper.loop(Looper.java:313)
at android.app.ActivityThread.main(ActivityThread.java:8669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)
Caused by: java.lang.IllegalArgumentException: Required argument "option" is missing and does not have an android:defaultValue
at com.example.elrestaurante.ui.orders.OrdersFragmentArgs.fromBundle(OrdersFragmentArgs.java:36)
at java.lang.reflect.Method.invoke(Native Method)
at androidx.navigation.NavArgsLazy.getValue(NavArgsLazy.kt:54)
at androidx.navigation.NavArgsLazy.getValue(NavArgsLazy.kt:35)
at com.example.elrestaurante.ui.orders.OrdersFragment.getArgs(OrdersFragment.kt:62)
at com.example.elrestaurante.ui.orders.OrdersFragment.onViewCreated(OrdersFragment.kt:83)
at androidx.fragment.app.Fragment.performViewCreated(Fragment.java:3128)
at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:552)
at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:261)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1890)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1814)
at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1751)
at androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:538)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:226)
at android.os.Looper.loop(Looper.java:313)
at android.app.ActivityThread.main(ActivityThread.java:8669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)
I/Process: Sending signal. PID: 3388 SIG: 9
The error points to the condition args?.let { ... I don't know what to do, please dears if you have some idea to fix this problem I will appreciate it.
I just want send a parameter called option from "EditOrderFragment" to "OrdersFragment" but now I can't access to OrdersFragment, I don't know why happens this error, maybe is a bug?
thanks so much.
PD: I'm using this versions:
id 'androidx.navigation.safeargs' version '2.5.3' apply false
//Navigation components
implementation "androidx.navigation:navigation-fragment-ktx:2.5.0"
implementation "androidx.navigation:navigation-ui-ktx:2.5.0"