在我的主要活动中,我设置了一个界面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吗?
答案 0 :(得分:3)
尝试使用关键字INSTANCEOF
并检查片段是否是接口的实例
你可以查看:use of "Instance of" in java
答案 1 :(得分:1)
检查片段是否是给定片段的instanceof
if(frags.get(pager.getCurrentItem()) instanceof CentreKeyPress){
//fragment implements CentreKeyPress
}