安卓实例化接口

  • 本文关键字:接口 实例化 android
  • 更新时间 :
  • 英文 :


我其实没有任何问题,只是想请你解释一下这个代码

public class HeadlinesFragment extends ListFragment {
OnHeadlineSelectedListener mCallback;
// Container Activity must implement this interface
public interface OnHeadlineSelectedListener {
    public void onArticleSelected(int position);
}
@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    // This makes sure that the container activity has implemented
    // the callback interface. If not, it throws an exception
    try {
        mCallback = (OnHeadlineSelectedListener) activity;
    } catch (ClassCastException e) {
        throw new ClassCastException(activity.toString()
                + " must implement OnHeadlineSelectedListener");
    }
}
...

}

这是关于实现接口方法的类对象吗?即使是,也请解释一下感谢

代码创建接口OnHeadlineSelectedListener,并要求片段所附加的任何活动都必须实现该接口。(OnHeadlineSelectedListener) activity尝试将活动强制转换到该接口,即检查该活动是否实现了它。如果没有,则抛出ClassCastException

首先,例如,当您希望在活动和片段之间进行通信时;如果你有一个应用程序,让用户选择一个标题,然后打开它的详细信息,你可以使用上面显示的界面。

接口定义

接口是一个契约,无论谁实现它,都必须尊重/遵守。就像现实生活中的任何其他合同一样。

现在,在您的Fragment中,当您准备将某件事通知您的活动时——考虑到他们正是出于这个原因(待通知)实现了接口,您确保将接口强制转换为您的活动,并抛出ClassCastException,让类知道它必须实现接口。

类型

当您将接口强制转换为活动时,这意味着当活动实现接口时,它将变为该类型(接口类型)。

订阅服务器/发布服务器设计模式

仔细想想,这听起来像是流行的Subscriber/Publisher设计模式。

如何?

在这种情况下,片段是publisher

此处的活动是subscriber

因此,从本质上讲,为了遵守契约的规则,活动必须实现有助于两个类通信的接口!

我希望这能有所帮助。

顺便说一句,这听起来和我目前在PlayStore上发布的演示应用程序非常相似。

最新更新