检查类是否为片段或活动

时间:2016-05-04 08:27:12

标签: android android-fragments android-activity

我从api获取活动名称(到现在为止我正在使用项目中的活动)。但现在他们中的一些我做了片段。 现在我正在开始我的活动

Class<?> myClass = Class.forName("com.aksu.emp." + ((com.core.Menu) o)
                        .getActivityName());
Activity activity = (Activity) myClass.newInstance();
ActivityRedirect(activity); 

如果我已将某些活动转换为片段,我如何检查它是否为片段和交换片段。

3 个答案:

答案 0 :(得分:3)

手动实例化活动等并不是一个好主意。假设你的对象在o,你应该做这样的事情

if (o instanceof Activity) {
    if (o instanceof ActivityA) {
        // go to A
    } else if (o instanceof ActivityB) {
        // go to B
    }
} if (o instanceof Fragment) {
    // do something else
}

对于活动,您甚至可以简化(如果您不需要通过捆绑或类似的方式发送特定数据)。

if (o instanceof Activity) {
    context.startActivity(context, ((Activity) o).class));
}

答案 1 :(得分:0)

使用反思来吸引父母。像这样:

myClass.class.getSuperclass()

所以你可以看出父母是一个活动还是另一个类。

答案 2 :(得分:0)

问题是首先检查字符串是否是片段或类然后执行相应的操作。我解决了它。

try {
            if (((com.core.Menu) o).getActivityName() != null) {
                Class<?> myClass = Class.forName("com.aksu.emp." + ((com.core.Menu) o)
                        .getActivityName());
                try {
                    Activity activity = (Activity) myClass.newInstance();
                    ActivityRedirect(activity);

                } catch (Exception e) { // its not an activity it could be fragment
                    Fragment fragment = (Fragment) myClass.newInstance();
                    fragmentOrganizer.openFragment(fragment);
                }
            }
        } catch (Exception e) {// ooh string is not in correct format for both activity and fragment
            new ExceptionHandler(this).caughtException(e);
        }