38

में कनवर्ट नहीं कर सकता मैं अपना पहला एंड्रॉइड ऐप कर रहा हूं, और सीधे आईसीएस एपीआई में जाना चाहता था। मैंने अब तक एक्शनबार का उपयोग करके ऐप बनाया है, जिसमें व्यूपेगर और फ्रैगमेंट्स का उपयोग करके स्वाइप करने योग्य टैब हैं।android.support.v4.app.Fragment से android.app.Fragment

हालांकि मुझे कुछ त्रुटियों का अनुभव होता है जो मैं लौट रहा हूं।

मैं इसे कैसे कार्यान्वित करता हूं इसके आधार पर, यह हमेशा "मिस्चैच टाइप करें" त्रुटि पर वापस जा रहा है: "android.support.v4.app.Fragment से android.app4Fragment में परिवर्तित नहीं हो सकता है"। मैंने सभी आयात संदर्भों को हटाने की कोशिश की है, और यह त्रुटि तब प्रकट होती है जब मैं केवल tabListener, FragmentActivity और मेरे दो टुकड़ों में android.support.v4.app.Fragment का उपयोग करता हूं।

त्रुटि मेरी TabListener में होता है:

import android.app.ActionBar; 
import android.app.ActionBar.Tab; 
import android.app.Activity; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentTransaction; 
import android.support.v4.view.ViewPager; 
import android.util.Log; 

public class TabListener implements ActionBar.TabListener { 
    private android.app.Fragment fragment; 
    private Activity activity; 
    private ViewPager pager; 
    private FragmentTransaction ft; 

    public TabListener(Activity activity, Fragment fragment, ViewPager pager) { 
     this.activity = activity; 
     this.fragment = fragment; 
     this.pager = pager; 
    } 

    @Override 
    public void onTabSelected(Tab tab, android.app.FragmentTransaction ft){  
     if (fragment == null) { 
      ft.add(fragment, null); 
     } else { 
      ft.attach(fragment); 
     } 
    } 

    @Override 
    public void onTabReselected(Tab tab, android.app.FragmentTransaction ft){ 
     // TODO Auto-generated method stub 
    } 

    @Override 
    public void onTabUnselected(Tab tab, android.app.FragmentTransaction ft){ 
     // TODO Auto-generated method stub 
    } 
} 

"android.app.FragmentTransaction फुट" को दूर करने के लिए, बस "FragmentTransaction फुट" इसकी जगह रखकर समस्या awawy चला जाता है। फिर नई समस्याएं उत्पन्न होती हैं:

The method onTabReselected(ActionBar.Tab, FragmentTransaction) of type TabListener must override or implement a supertype method TabListener.java

The method onTabSelected(ActionBar.Tab, FragmentTransaction) of type TabListener must override or implement a supertype method TabListener.java

The method onTabUnselected(ActionBar.Tab, FragmentTransaction) of type TabListener must override or implement a supertype method TabListener.java

The type TabListener must implement the inherited abstract method ActionBar.TabListener.onTabReselected(ActionBar.Tab, FragmentTransaction) TabListener.java

The type TabListener must implement the inherited abstract method ActionBar.TabListener.onTabSelected(ActionBar.Tab, FragmentTransaction) TabListener.java

The type TabListener must implement the inherited abstract method ActionBar.TabListener.onTabUnselected(ActionBar.Tab, FragmentTransaction) TabListener.java

यहां क्या चल रहा है?

जैसा कि आप समझ सकते हैं, मैं जावा और एंड्रॉइड विकास के लिए नया हूं। मुझे लगता है कि मैं बहुत करीब हूं, लेकिन मैं इस समस्या को हल करने में सक्षम नहीं हूं। मुझे समझ में नहीं आ रहा है कि क्यों "android.support.v4.app.Fragment से android.app.Fragment में कनवर्ट करना है जब मैं एंड्रॉइड.एप.फ्रैगमेंट भी आयात नहीं कर रहा हूं।

मुझे लगता है कि यह संबंधित है संगतता पैकेज का उपयोग करना। (क्या मुझे एसडीके के नवीनतम संस्करण के लिए ऐप बनाने के दौरान इस पैकेज का उपयोग करना होगा?)

उत्तर

0

आप समर्थन पैकेज को हटा सकते हैं, और इससे आपकी समस्या हल होनी चाहिए। इसकी केवल आवश्यकता है जब आपको पिछले संस्करणों के लिए एंड्रॉइड 3.0 और ऊपर के ऐप्स में फ़ंक्शंस की आवश्यकता होती है।
आपके मामले में आपको आईसीएस से डिफ़ॉल्ट टुकड़े और समर्थन पैकेज से टुकड़े दोनों मिलते हैं, और यदि आपको विभिन्न पैकेजों से ऑब्जेक्ट प्राप्त होते हैं तो वे एक साथ काम नहीं करते।

लघु संस्करण; आप या तो होनकॉम या दोनों के ऊपर एक एपीआई स्तर का उपयोग करते हैं, दोनों नहीं।

+0

मैं समझता हूं। मैंने समर्थन पैकेज का उपयोग करने की आवश्यकता को हटाने का प्रयास किया है, लेकिन फिर मुझे अपने FragmentPagerAdapter में एक और समस्या के साथ छोड़ दिया गया है - जिसे मैं "android.app.FragmentPagerAdapter" के रूप में आयात नहीं कर सकता। > वापसी का प्रकार FragmentPagerAdapter.getItem (int) MainFragmentActivity.java के साथ असंगत है यह खंड को वापस करने के लिए प्रयास करता है, जो टुकड़ा mFragment = LatestFragment.newInstance (स्थिति) है; – SLekvak

+1

एपीआई लेवल 11 या उच्चतम * के निर्माण लक्ष्य को पूरी तरह से उचित है और * एंड्रॉइड सपोर्ट पैकेज का उपयोग करें। – CommonsWare

+0

@ कॉमन्सवेयर: मैं इस धारणा के तहत था कि समर्थन पैकेज (v4) एपीआई स्तर 11 (v13 पैकेज से मेरे दिमाग में फिसल गया) की विशेषताओं पर बनाया गया था, लेकिन ओप के मामले में, जब वह आईसीएस (एपीआई> 13) के लिए विकसित होता है, तो पैकेजों की सामग्री को अतिरिक्त पैकेज के बिना समर्थित किया जाना चाहिए, या मैं गलत हूँ? – Jave

14

Whats going on here?

जबकि Android समर्थन पैकेज आप एक पीछे की ओर संगत Fragment कार्यान्वयन देता है, ActionBarAndroid समर्थन पैकेज का नहीं हिस्सा है। इसलिए, ActionBar.TabListener देशी एपीआई स्तर 11 Fragment वस्तुओं की उम्मीद कर रहा है। एक्शन बार और एंड्रॉइड सपोर्ट टुकड़े दोनों के लिए ActionBarSherlock का उपयोग करने पर विचार करें।

but then I'm left with another problem in my FragmentPagerAdapter

FragmentPagerAdapter Android समर्थन पैकेज में एक सा गन्दा है - यह एपीआई स्तर 11 Fragment वस्तुओं, नहीं Android समर्थन Fragment वस्तुओं चाहता है। हालांकि, आप स्रोत को FragmentPagerAdapter (स्रोत आपके एसडीके में) पर क्लोन कर सकते हैं और अपना खुद का कार्यान्वयन बना सकते हैं जो Fragment और केन के support.v4 स्वाद का उपयोग करता है।

+0

FragmentPagerAdapter को क्लोन करना, और इसे android.app.Fragment/import android.app.FragmentManager/import android.app.FragmentTransaction का उपयोग करने के लिए कह रहा है .. इस बार कोई त्रुटि नहीं है! धन्यवाद – SLekvak

+0

स्लेक्वाक, क्या आपका कार्यान्वयन एपीआई 11 और निचले उपकरणों पर काम करता है, या सिर्फ एपीआई 13+ पर? – MattF

116

उपयोग करने के लिए getSupportFragmentManager() बजाय getFragmentManager()

+0

मैं इस TutViewerFragment व्यूअर = (TutViewerFragment) getSupportFragmentManager()। FindFragmentById (R.id.tutview_fragment) को आज़माएं; लेकिन त्रुटि दिखाता है "खंड से ट्यूटव्यू फ्रैगमेंट तक नहीं डाला जा सकता" – Newts

+0

ट्यूटव्यूयर फ्रैगमेंट के माता-पिता क्या हैं? – gayavat

+0

इसकी फ्रैगमेंट एक्टिविटी – Newts

0

मैं कल ही समस्या मिला है की कोशिश करो।

वास्तव में अच्छा page by Samsung है जो एक्शनबारशेलॉक को कवर करता है। जांचें कि क्या आप बाईं ओर आयात/कक्षाओं/विधियों में से एक का उपयोग करते हैं और उन्हें दाईं ओर आयात/कक्षाओं/विधियों द्वारा प्रतिस्थापित करते हैं।

0

मुझे एक ही समस्या थी। implements ActionBar.TabListener से implements TabListener पर इंटरफ़ेस को बदलकर इसे हल करें और फिर इस इंटरफ़ेस के अंदर विधियों को लागू करें। आपने जिस त्रुटि का उल्लेख किया है उसका भी उल्लेख किया है।

4

मुझे पता है कि इस प्रश्न का उत्तर देने में बहुत देर हो चुकी है लेकिन यह किसी भी समस्या के साथ किसी की मदद कर सकती है।

अपने जावा फ़ोल्डर पर जाएं और अपने टुकड़े की गतिविधि पर क्लिक करें।

आयात में,

import android.support.v4.app.Fragment;

साथ import android.app.Fragment; की जगह MainActivity बरकरार में कोड रखें और इस समस्या को हल करने में मदद करनी चाहिए।

नोट: यदि यह एक साथ काम नहीं करता है, तो चिंता न करें। बिल्ड> परियोजना को पुनर्निर्माण

4

This solution works for me

public class MyFragment extends Fragment{ 
} 

साथ

public class MyFragment extends android.support.v4.app.Fragment{ 
} 

की जगह है और यह भी

साथ आयात

import android.app.Fragment; 

की जगह