【问题标题】:android - Why should I implement interface while communicating between main activity and fragmentandroid - 为什么我应该在主要活动和片段之间进行通信时实现接口
【发布时间】:2015-06-17 10:58:53
【问题描述】:
我有些不明白。现在,我正在阅读android开发者网站上的文档,那里写着为了与片段通信,我应该实现接口。但是,现在我可以轻松访问位于主要活动类中的片段上的小部件。
例如,在主活动类中,通过发出以下行,我可以访问片段的 TextView。
TextView t1 = (TextView) findViewById(R.id.t1);
在这种情况下,为什么我需要实现接口? (原谅我的无知,谢谢)
【问题讨论】:
标签:
android
android-fragments
【解决方案1】:
在Fragment 上,如何访问它所附加的Activity 的方法?您可以调用 getActivity() 但这只会访问父 Activity 对象可用的方法,而不是您使用自己的自定义方法实现它。
要访问这些自定义方法,您需要告诉 Java 您知道您想要获取的特定 Activity 是您创建的,我们称之为 MyActivity,它显然扩展了 Activity 或其他一些实现比如ActionBarActivity。在这种情况下,您可以致电((MyActivity)getActivity()).myMethod();
现在的问题是您将片段耦合到该特定活动。这样一来,您将无法在项目中的任何其他活动中使用您的片段,因为该特定片段将寻找MyActivity。
因此,您可以在 interface 中声明 myMethod() 并让您的 Activity 实现它。如果将来您需要将该片段与另一个Activity 一起使用,您所要做的就是让它也实现该接口。