2012-03-06 94 views
31

我試圖用一個片段在FragmentActivity像這樣:FragmentActivity:不能從片段轉換爲派生類

TutViewerFragment viewer = (TutViewerFragment)  
getSupportFragmentManager().findFragmentById(R.id.tutview_fragment); 

而且我TutViewerFragment延伸Fragment。然而我得到一個錯誤:

Cannot cast from Fragment to TutViewerFragment.

我真的不明白爲什麼會發生這種情況。爲什麼不能投射?

+1

你確定TutViewerFragment是擴展Fragment嗎? – 2012-03-06 15:05:24

+0

我很積極。看看:http://pastie.org/3534066 – 2012-03-06 15:07:10

+0

你可以粘貼你的xml 元素嗎?你還使用什麼兼容性包? – Sid 2012-03-06 15:08:02

回答

70

您正在擴展錯誤的Fragment類。導入android.support.v4.app.Fragment而不是android.app.Fragment。擴展片段需要進口

android.support.v4.app.Fragment; 

,而不是

android.app.Fragment; 

我猜它與Android兼容包做的類:

+13

或者調用'getFragmentManager'而不是'getSupportFragmentManager'。 – theblang 2014-03-24 19:46:41

+0

感謝@mattblang請你詳細說明差異。 – Mayank 2015-01-19 19:13:33

+0

'getFragmentManager'返回一個本地片段,而'getSupportFragmentManager'返回一個支持片段。 'getSupportFragmentManager'是支持庫的一部分/添加,因爲它們不能改變現有方法的返回類型。 – devconsole 2015-01-19 19:42:03

6

由於devconsole在上面的評論中指出。問題現在已解決!

3

由於devconsole /指定伊戈爾,我們需要確保在這兩個類中使用的片段類相同。 即andorid.app.Fragment兩個

public class WorkoutDetailFragment extends Fragment 

,並在活動類,我們試圖讓該片段的引用。

WorkoutDetailFragment workoutDetailFragment = (WorkoutDetailFragment)getFragmentManager().findFragmentById(R.id.detail_frag); 

確保兩個文件中的相同片段類將解決類轉換異常。

希望這會有所幫助。我知道它有點晚了。我是Android的新手,並探索精彩語言的細微差別。感謝Stackoverflow幫助我解決這些小問題。

相關問題