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