如何检查Fragment是否实现了接口

时间:2014-04-02 13:11:17

标签: android interface

在我的主要活动中,我设置了一个界面CentreKeyPress,我在ViewPager中有4个片段,其中一些实现了这一点,有些人没有。界面有一个onBack方法,用于按下后退按钮。这是我当前的代码

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {

        ViewPager pager = (ViewPager)findViewById(R.id.contact_view_pager);

        List<Fragment> frags = adapter.getFragments();

        try {
            ((CentreKeyPress) frags.get(pager.getCurrentItem())).onBack();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    return super.onKeyUp(keyCode, event);
}

try / catch循环是检查Fragment是否实现接口的最佳方法,还是有某种方法可以用来检查它是否实现了它?或者,我的片段可以自己处理onKeyUp吗?

2 个答案:

答案 0 :(得分:3)

尝试使用关键字INSTANCEOF并检查片段是否是接口的实例 你可以查看:use of "Instance of" in java

答案 1 :(得分:1)

检查片段是否是给定片段的instanceof

if(frags.get(pager.getCurrentItem()) instanceof CentreKeyPress){
    //fragment implements CentreKeyPress
}