如何对class使用instanceof运算符

时间:2017-08-09 07:37:21

标签: java android android-fragments instanceof

我需要检查当前显示的片段以避免重新启动相同的片段类

启动片段使用代码:

private Class mFragmentClass;

mFragmentClass = InfoFragment.class;

if (null != mFragmentClass) {
  try {
     mFragment = (Fragment) mFragmentClass.newInstance();
     FragmentManager fragmentManager = getSupportFragmentManager();
     fragmentManager.beginTransaction().replace(R.id.content_navigation_menu, mFragment).commit();
  } catch (InstantiationException exception) {
     exception.printStackTrace();
  } catch (IllegalAccessException exception) {
     exception.printStackTrace();
  }
}

需要检查当前显示的片段:

if(mFragment instanceof (Fragment)mFragmentClass.newInstance())

给出了编译时错误

  

[),预期,预期类型]

3 个答案:

答案 0 :(得分:2)

尝试检查仅在运行时已知的类型:

mFragmentClass.isInstance(mFragment)

答案 1 :(得分:0)

您可以在Activity中打开片段

的静态字符串
public static String currentFragment = "";

然后在onResume的每个片段中,您可以像这样

将片段的名称赋予该字符串
MainActivity.currentFragment = "currentFrag";

然后你可以随时检查它。

答案 2 :(得分:0)

你可以这样做:if (mFragment instanceof mFragmentClass)