作为文档,我们必须在onAttach()中将Activity转换为接口,以便在Fragment-to-Fragment之间进行通信。
OnHeadlineSelectedListener mCallback = (OnHeadlineSelectedListener) activity;
在此之后,我们可以在Activity类中实现该接口并使用它的方法。 但是,我想知道,因为该接口是由Activity类实现的。
那么,为什么我们不在Fragment onAttach()中实例化它,如下所示:
OnHeadlineSelectedListener mCallback = new ActivityClass();// After this all methods are also available in fragment class.
使用这种方式,我们也可以使用Interface方法传递数据。但是,为什么我们不使用它?
感谢。
答案 0 :(得分:2)
您无法使用Activity, Service, BroadcastReceiver, Provider
关键字创建Android组件的新实例(new
)。只有Android框架才能创建这些组件,因为他们需要在构建期间通过Android框架设置Context
。虽然编译器会允许你这样做,并且你的代码会运行,但在某些时候你会崩溃,因为这些组件中的方法总是假设它们有一个有效的Context
。