当前位置: 首页 > 知识库问答 >
问题:

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

游皓
2023-03-14

我有一个活动A。在这个活动的stepperLayout中,我使用了片段B。我从片段B调用对话片段C。在对话片段C上,我调用listenerInterface方法,但侦听器接口为空。所以有一个空指针异常。活动A没有实现接口。只有片段B实现了它。

 My Fragment B

 dialogFragmentC = DialogFragmentC .newInstance();
 dialogFragmentC .show(getFragmentManager(), "");

My DialogFragment C

 @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        try {
            this.listener = (DialogFragmentListener) context;
        } catch (Exception e) {
            Timber.i(e);
        }
    }

共有1个答案

宣俊豪
2023-03-14

由于您从一个片段启动一个对话框片段,因此传统的方法将不起作用。

解决方案1:

使用子片段管理器启动:<代码>对话框FragmentC。显示(getChildFragmentManager(),“”) 然后检查父片段:<代码>此。listener=(DialogFragmentListener)getParentFragment()

解决方案2:

使用目标片段:Android-getTargetFraank和setTargetFraank-它们用于什么。创建dialogFragmentC时,将dialogFragmentC的目标片段设置为FragmentB,并在dialogFragmentC中使用getTargetFraank获取侦听器。

 类似资料:
  • 我试图在列表视图的onItemClick中用另一个片段替换片段,我想将所选项目名称从列表片段发送到另一个片段,但它显示空指针异常 @覆盖onItemClick上的公共无效(AdapterView ar0,视图,int位置,长id){ 但是同样的概念在下面的按钮点击中工作

  • 我在一个片段中制作了一个listview列表视图的适配器有一个空指针异常,但Arraylist和适配器不为空。 错误:lvElevator不能为null 错误是针对以下行的 电梯。适配器=EAdapter

  • 通常在片段中,我在onAttach()中附加一个监听器,并在onDetach()中取消监听器。 是否需要在onDetach()中将侦听器设置为null? 虽然我这样做是因为它使代码看起来更加对称,但似乎没有必要这样做,因为片段已经被销毁了,因为根据片段的生命周期,之前已经调用了onDestroyView()和onDestroy()。 提前谢谢。

  • 我试图展示一个祝酒词,当我的API请求不工作,由于没有互联网连接。首先,我尝试在try块失败时显示一个Toast,然后在catch块中显示这个Toast。我尝试了developer.android.com的方法,但我甚至无法启动应用程序。 我在catch-block中的代码是这样的: 我似乎对方法有问题,因为它突出显示为红色。这似乎是一个问题,因为我在一个片段内部使用这个。我在使用时读到了一些内容

  • 我正在实现一个片段,该片段调用两个。