2012-03-06 28 views
31

को नहीं दिया जा सकता मैं बहुत की तरह एक FragmentActivity में एक टुकड़ा का उपयोग करने की कोशिश कर रहा हूँ:FragmentActivity: टुकड़ा से व्युत्पन्न वर्ग

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

और मेरे TutViewerFragment फैली Fragment। हालांकि मुझे एक त्रुटि मिल रही है:

Cannot cast from Fragment to TutViewerFragment.

मुझे वास्तव में समझ में नहीं आता कि यह क्यों हो रहा है। इसे क्यों नहीं डाला जा सकता है?

+1

क्या आप सुनिश्चित हैं कि TutViewerFragment Fragment का विस्तार कर रहा है? –

+0

मैं सकारात्मक हूँ। एक नज़र डालें: http://pastie.org/3534066 –

+0

क्या आप अपना एक्सएमएल तत्व पेस्ट कर सकते हैं? इसके अलावा आप किस संगतता पैकेज का उपयोग कर रहे हैं? – Sid

उत्तर

70

आप गलत टुकड़े वर्ग का विस्तार कर रहे हैं। android.app.Fragment के बजाय android.support.v4.app.Fragment आयात करें। वर्ग कि फैली टुकड़ा

android.support.v4.app.Fragment; 

और नहीं

android.app.Fragment; 

आयात करने के लिए मुझे लगता है कि यह Android संगतता पैकेज के साथ क्या करना है की जरूरत है:

+13

या 'getSupportFragmentManager' के बजाय 'getFragmentManager' को कॉल करना'। – theblang

+0

धन्यवाद @ मट्टब्लैंग क्या आप कृपया इस अंतर पर विस्तृत जानकारी दे सकते हैं। – Mayank

+0

'getFragmentManager' मूल फ्रैगमेंट लौटाता है, जबकि' getSupportFragmentManager' एक समर्थन फ्रैगमेंट देता है। 'getSupportFragmentManager' समर्थन लाइब्रेरी का हिस्सा/जोड़ा गया है क्योंकि वे मौजूदा विधि के रिटर्न प्रकार को नहीं बदल सकते हैं। – devconsole

6

रूप devconsole ऊपर टिप्पणी में बताया । समस्या अब हल हो गई है!

3

devconsole/igor निर्दिष्ट, हमें यह सुनिश्चित करने की आवश्यकता है कि दोनों वर्गों में उपयोग की गई फ्रैगमेंट क्लास समान है। दोनों

public class WorkoutDetailFragment extends Fragment 

में और गतिविधि वर्ग जहां हम टुकड़ा के संदर्भ प्राप्त करने की कोशिश में अर्थात andorid.app.Fragment।

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

दोनों फाइलों में एक ही फ्रैगमेंट क्लास सुनिश्चित करना क्लास कास्ट अपवाद को हल करेगा।

उम्मीद है कि इससे मदद मिलती है। मुझे थोड़ा देर हो चुकी है। मैं एंड्रॉइड के लिए नया हूं और अद्भुत भाषा की बारीकियों की खोज करता हूं। इन मामूली मुद्दों को हल करने में मेरी सहायता के लिए स्टैक ओवरफ्लो का धन्यवाद।

संबंधित मुद्दे