【问题标题】:How to check if Fragment implements an interface如何检查 Fragment 是否实现了接口
【发布时间】:2014-04-02 13:11:16
【问题描述】:

在我的主要活动中,我设置了一个接口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 是否实现接口的最佳方法,还是有某种方法可以用来检查它是否实现?或者,我的 Fragment 可以自己处理 onKeyUp 吗?

【问题讨论】:

    标签: android interface


    【解决方案1】:

    尝试使用关键字INSTANCEOF 并检查片段是否为接口实例 您可以通过以下方式查看:use of "Instance of" in java

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2018-10-19
        • 2016-09-29
        • 2010-09-21
        • 2012-12-29
        • 2012-04-27
        • 1970-01-01
        • 2018-11-16
        • 1970-01-01
        • 2011-02-01
        相关资源
        最近更新 更多