2013-04-04 141 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