为什么我们在Fragment onAttach()中将android Activity转换为接口?

时间:2015-12-17 06:01:50

标签: android android-fragments android-activity

作为文档,我们必须在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方法传递数据。但是,为什么我们不使用它?

感谢。

1 个答案:

答案 0 :(得分:2)

您无法使用Activity, Service, BroadcastReceiver, Provider关键字创建Android组件的新实例(new)。只有Android框架才能创建这些组件,因为他们需要在构建期间通过Android框架设置Context。虽然编译器会允许你这样做,并且你的代码会运行,但在某些时候你会崩溃,因为这些组件中的方法总是假设它们有一个有效的Context