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 高阶函数返回空值_Android_Kotlin_Callback_Higher Order Functions - Fatal编程技术网

Android 高阶函数返回空值

Android 高阶函数返回空值,android,kotlin,callback,higher-order-functions,Android,Kotlin,Callback,Higher Order Functions,我将从MainActivty进入MenuFragment,并在MenuFragment类中调用RecycleServiceAdapter inside来设置要显示的数据。然后,我想在适配器中使用高阶函数(Kotlin语言)设置回调,将数据发送到MainActivity,以更改BottomNavigationView UI中的某些内容 主要活动类别: val callbackFromAdapter=RecyclerAdapterInside(null,null,this,::callbackAda

我将从MainActivty进入MenuFragment,并在MenuFragment类中调用RecycleServiceAdapter inside来设置要显示的数据。然后,我想在适配器中使用高阶函数(Kotlin语言)设置回调,将数据发送到MainActivity,以更改BottomNavigationView UI中的某些内容

主要活动类别:

val callbackFromAdapter=RecyclerAdapterInside(null,null,this,::callbackAdapterInside)

    private fun callbackAdapterInside(OrderList:MutableList<OrderLive>)
    {
        var totalSum=0

        for(elements in OrderList)
        {
            totalSum+=elements.getcount()

        }
        Log.d("oncell", "$totalSum")
        if(totalSum>0)
        {
            CoroutineScope(Dispatchers.Main).launch {
                badge_current_order.visibility=View.VISIBLE
                badge_current_order.setText(totalSum)
            }
        }

        else
            CoroutineScope(Dispatchers.Main).launch {
                badge_current_order.setText(0)
                badge_current_order.visibility=View.GONE
            }
    }
因此,我应该为CurrentCartUpdateCallback变量创建null类型。因为我从不在MenuFragmentClass中使用这个回调函数,而且当我在这个类中不需要回调函数时,我总是传递null。所以我只是在MainActivity类中使用它

问题是在以下情况下,callbackAdapterInside从未调用,CurrentCartUpdateCallback始终为空:

if(CurrentCartUpdateCallback!=null)
我很少使用高阶函数。我必须按类号的顺序使用这个回调吗
Adapter->3->2->1或者我可以直接使用从Adapter类到主活动类的回调吗?

您的RecyclerAdapterInside构造函数有四个参数,第四个参数是CurrentCartUpdateCallback,因此当您在MenuFragment中创建实例时,您使用的是null值,这很正常,请不要继续ifcondition@ManuelMatoTnx。请参阅MainActivity类中适配器的实例。我想在MainActivity类中使用回调结果,而不是MenuFragment类。所以我想在菜单中传递空值是合理的。我认为处理回收者视图非常简单,但在这个流程中非常困难,所以我认为有必要重新考虑该方法。。。例如,如果活动包含名为MenuFragment的片段,并且此片段包含回收器视图,则MenuFragment必须接收回调,然后您需要将该片段与活动进行通信,例如activity.doSomething或共享ViewModel或Presenter。。。RecyclerView只需要通过构造函数接收一个lambda来接收持有者的点击和数据,以显示数据是否可更改example@ManuelMato是的,你是对的。但我对MVVM架构了解不多。所有片段都是MainActivity的一部分。我明白你说的话。我想做的事情是,当recyclerView的项目总数大于0时,我得出结论,在我的活动购物车中有一个订单列表。我想将我的物品订单计数器添加到bottomNavigationView作为徽章计数器。我想通过回调方法来实现这一点。调用回调时,bottomNavigationView中的UI计数器将更新。我可能会考虑使用共享偏好来获得结果。在共享首选项中保存活动顺序的计数器…是的,你是对的,如果你是android新手,很难做到这一点,这很正常:)所以一步一步地,我不能给你一个简单的方法来添加到你的代码中,很抱歉你的RecyclerAdapterInside构造函数有四个参数,第四个是CurrentCartUpdateCallback,因此,当您在MenuFragment中创建一个实例时,您使用的是null值,因此这是正常的,请不要继续ifcondition@ManuelMatoTnx。请参阅MainActivity类中适配器的实例。我想在MainActivity类中使用回调结果,而不是MenuFragment类。所以我想在菜单中传递空值是合理的。我认为处理回收者视图非常简单,但在这个流程中非常困难,所以我认为有必要重新考虑该方法。。。例如,如果活动包含名为MenuFragment的片段,并且此片段包含回收器视图,则MenuFragment必须接收回调,然后您需要将该片段与活动进行通信,例如activity.doSomething或共享ViewModel或Presenter。。。RecyclerView只需要通过构造函数接收一个lambda来接收持有者的点击和数据,以显示数据是否可更改example@ManuelMato是的,你是对的。但我对MVVM架构了解不多。所有片段都是MainActivity的一部分。我明白你说的话。我想做的事情是,当recyclerView的项目总数大于0时,我得出结论,在我的活动购物车中有一个订单列表。我想将我的物品订单计数器添加到bottomNavigationView作为徽章计数器。我想通过回调方法来实现这一点。调用回调时,bottomNavigationView中的UI计数器将更新。我可能会考虑使用共享偏好来获得结果。在共享偏好中保存活动顺序的计数器…是的,你是对的,如果你是android新手,很难做到这一点,这是正常的:)所以一步一步,我不能给你一个简单的方法来添加你的代码,对不起
       recyclerview.adapter=RecyclerAdapterInside(
            id,
            result,
            this@MenuFragment.requireContext(),
            null
        )
if(CurrentCartUpdateCallback!=null)