2013-04-04 106 views
0
private void switchFragment(Fragment fragment) { 
    if (getActivity() == null) 
     return; 

    ClassA pm = (ClassA) getActivity(); 
    pm.switchContent(fragment); 
} 

我想从ClassB switch fragments,我得到这个异常,当我尝试做。我正在尝试调用Class A活动的片段。java.lang.ClassCastException切换片段

java.lang.ClassCastException:com.test.ClassB不能转换到 com.test.ClassA

回答

3

使用instanceof它铸造于ClassAClassB之前检查getActivity()类型。尝试,因为:

if (getActivity() instanceof ClassA) { 
    ClassA pm = (ClassA) getActivity(); 
    pm.switchContent(fragment); 
} 
else if (getActivity() instanceof ClassB) { 
    ClassB pm = (ClassB) getActivity(); 
    pm.switchContent(fragment); 
} 
+0

但是,这将在B级执行我的片段,因为我在这方面... – Kevin 2013-04-04 15:59:04

+0

@Kevin:PLZ检查[这个例子](https://github.com/jfeinstein10/ SlidingMenu/blob/master/example/src/com/slidingmenu/example/fragments/ColorMenuFragment.java)获得更多帮助,因为目前您正尝试将ClassB上下文转换为ClassA – 2013-04-04 16:06:17

+0

我正在使用该示例,但我只是想如果if我在ClassB上下文中......那么当我们在Class B中时,Class A的片段永远不能被称为存在为Class A上下文 – Kevin 2013-04-04 16:09:15