Android Fragment实现对话框片段侦听器“空指针异常”

时间:2019-01-12 13:34:44

标签: android interface fragment

我有一个活动A。在此活动的stepperLayout中,我使用片段B。我从片段B调用dialogFragmentC。比对DialogFragment C,我调用listenerInterface方法,但侦听器接口为null。因此,存在一个空指针异常。活动A未实现接口。只有片段B实现了它。

   var sum = (from order in dbContext.ORDERS
                  join orderDetails in dbContext.ORDER_DETAILS
                  on order.ID equals orderDetails.ORDER_ID
                  where order.IS_DELIVERED == true && order.IS_RETURNED_BACK == false
                  select new { orderDetailTotal = od.QUANTITY * od.PRODUCT_PRICE) }).Sum(x => x.orderDetailTotal);

1 个答案:

答案 0 :(得分:0)

由于您是从片段中启动对话框片段,因此传统方式将无效。

解决方案1:

使用子片段管理器启动:dialogFragmentC.show(getChildFragmentManager(), "");,然后检查父片段:this.listener = (DialogFragmentListener) getParentFragment();

解决方案2:

使用目标片段:Android - getTargetFragment and setTargetFragment - What are they used for。创建dialogFragmentC时,将dialogFragmentC的目标片段设置为FragmentB,并在dialogFragmentC中使用getTargetFragment获取侦听器。