Java 在片段中实现接口

Java 在片段中实现接口,java,android,Java,Android,我试图在一个片段上实现一个接口。为此,我创建了一个类“X”来执行一个操作。在这个类中,我创建了一个使用接口对象的方法,在片段中,我实现了接口并创建了一个类“X”的对象,它调用了使用接口对象的方法。正如您在下面的代码中所看到的 接口 public interface NewInterface { public void sum(int a,int b); } 碎片 public class ExampeleFragment extends Fragment implements Ne

我试图在一个片段上实现一个接口。为此,我创建了一个类“X”来执行一个操作。在这个类中,我创建了一个使用接口对象的方法,在片段中,我实现了接口并创建了一个类“X”的对象,它调用了使用接口对象的方法。正如您在下面的代码中所看到的

接口

public interface NewInterface {

    public void sum(int a,int b);
}
碎片

public class ExampeleFragment extends Fragment implements NewInterface {

    private ClassX classx;

    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {



        View root = inflater.inflate(R.layout.fragment_example, container, false);

        classx.sum(1,1);

        return root;
    }

    @Override
    public void sum(int a, int b) {
        
        int sum = a+b;

    }
}
我得到了一个错误:

java.lang.NullPointerException:尝试对空对象引用调用接口方法


类x中的NewInterface对象为null。但是,当我在MainActivity类中实现它时,这个过程就可以工作了。有人知道会发生什么吗?

您会得到NullPointerException,因为您没有为ClassX对象中的newInterface属性分配任何内容

我不明白你为什么调用
classx.sum(1,1)
而ClassX上的sum方法不接受任何参数

试试这个:
为ClassX创建一个构造函数,它接受一个NewInterface参数。因此,您的ClassX将如下所示:

public class ClassX {

private NewInterface newInterface;

public ClassX(NewInterface newInterface) {
    this.newInterface = newInterface;
}

public void sum(){

    newInterface.sum(1,1);

}

}
classX = new ClassX(this);
然后初始化classX对象,如下所示:

public class ClassX {

private NewInterface newInterface;

public ClassX(NewInterface newInterface) {
    this.newInterface = newInterface;
}

public void sum(){

    newInterface.sum(1,1);

}

}
classX = new ClassX(this);
打电话之前

classX.sum();

谢谢我忘了在这个例子中输入参数。我在x类构造函数上传递了接口,它成功了。