java - 在这种情况下如何避免使用instanceof?

标签 java android fragment instanceof

在检查 Fragment 是什么子类时,我不得不多次使用 instanceof ,而且我觉得我在某个地方出错了:

@Override
public void onBackPressed() {

    Fragment frag = mManager.findFragmentByTag("Fragment");

    if(frag instanceof CustFragmentOne || 
       frag instanceof CustFragmentTwo || 
       frag instanceof CustFragmentThree || 
       frag instanceof CustFragmentFour) {

            //This method displays an instance of "CustFragmentFive"
            displayView(0);
    }
    else if(frag instanceof CustFragmentFive)
         super.onBackPressed();

    else if(mManager.getBackStackEntryCount() > 0)
        getFragmentManager().popBackStack();

    else
       super.onBackPressed();

}

有什么办法可以在这里使用它吗?我还能如何识别 fragment 的类型并相应地调用正确的方法?

最佳答案

最简单的方法是让 CustFragmentOne、CustFragmentTwo 等实现一个通用接口(interface)。这样,您只需要针对该接口(interface)执行一次instanceof 检查,而不需要单独检查每个具体类。

另一种方法类似于:How to implement onBackPressed() in Fragments?

关于java - 在这种情况下如何避免使用instanceof?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24553884/

相关文章:

android - Facebook 登录不执行任何操作

android - 动态改变ViewpagerIndicator Fragment Content Android

java - 当我尝试在 OSX 下使用 Tomcat 在 Netbeans 中运行 JSP 项目时,程序挂起

java - 后端Play框架,前端呢?

c# - 拖放文件上传asp.net或java

android - 检测屏幕中的 fragment

android - fragment onListItemClick

java - 为什么从 BOM 引用版本的 Maven 子项不起作用?

Android 我的 APK 大小更大 50 MB

android - 从 SDCard 安装并将其置于后台后应用程序重新启动