我从api获取活动名称(到现在为止我正在使用项目中的活动)。但现在他们中的一些我做了片段。 现在我正在开始我的活动
Class<?> myClass = Class.forName("com.aksu.emp." + ((com.core.Menu) o)
.getActivityName());
Activity activity = (Activity) myClass.newInstance();
ActivityRedirect(activity);
如果我已将某些活动转换为片段,我如何检查它是否为片段和交换片段。
答案 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);
}