6

पर संकलन नहीं है मैं यह कैसे दिखा सकते हैंgetSupportFragmentManager DialogFragment

public class MyFragment extends Fragment 
    { 
     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
     { 

    ... 

      ImageView btnTags = (ImageView)view.findViewById(R.id.btnTags); 
      btnTags.setOnClickListener(new View.OnClickListener() 
      { 
       @Override 
       public void onClick(View view) 
       { 

        DialogFragment dlg = new TagsDialog(); 
        //this line doesn't compile 
        dlg.show(getSupportFragmentManager(), "tags"); 

       } 
      }); 
} 
} 

मैं उम्र के लिए कोशिश की है यह काम करने के लिए है, लेकिन getSupportFragmentManager कभी हल नहीं किया गया है ... कोई विचार?

संपादित करें:

मैं यह सब समर्थन FragmentManager बनाम android.app.FragmentManager के कारण होता है लग रहा है, लेकिन मैं यह कैसे हल करने के लिए, जैसा कि मैंने समर्थन पुस्तकालय से ViewPager का उपयोग कर रहा हूँ पता नहीं है ...

getSupportFragmentManager/और माता-पिता और बच्चे जैसे सभी संबंधित getFragManager विधियों को हमेशा समर्थन lib से प्रबंधक लौटाता है, तो शो विधि कोर एक चाहता है।

आयात कर रहे हैं:

import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 

FragmentManager fm = getActivity().getSupportFragmentManager(); // returns from support lib 
DialogFragment dlg = new TagsDialog(); 
dlg.show(fm, "tags"); // wants core... 

अगर मैं सिर्फ कोर का उपयोग करें, तो getSupportFragmentManager()getActivity() पर मौजूद नहीं है ...

+0

हल करने से आपका क्या मतलब है? क्या आपके पास कोई स्टैक ट्रेस है? – Snicolas

+0

@ सिंकोलस यह संकलित नहीं करता है। आप लाल sqiggly लाइन पता है। – sprocket12

+0

लॉल। कहा पे ? कौन सी रेखा, अपराधी लाइन – Snicolas

उत्तर

12

आप दोगुना अपने आयात जांच होनी चाहिए। आप समर्थन पुस्तकालय से और एंड्रॉइड कोर एपिस से Fragment & FragmentManager के मिश्रण का उपयोग नहीं कर सकते हैं।

यदि आप समर्थन का उपयोग करते हैं, तो समर्थन से सबकुछ का उपयोग करें (पैकेज android.support.v4.app से)। यदि नहीं, तो कोर एपीआई पैकेज (android.app) से सबकुछ का उपयोग करें।

+0

तो समर्थन पुस्तकालय से भी Fragments और FragmentManager का उपयोग करें। – Snicolas

+0

कृपया मेरे संपादन देखें। – sprocket12

+1

समस्या हल हो गई। मेरा डायलॉग फ्रैगमेंट भी समर्थन lib से आकर विसंगति का हल हो गया था। – sprocket12

2

मैं अपने फ्रैगमेंट में जो करता हूं वह व्यूपेजर में है। डायलॉगफ्रैगमेंट दिखाने के लिए कोड वही है जहां आप इसे कभी भी करेंगे।

FragmentManager fm = getActivity().getSupportFragmentManager(); 
ConfirmDeleteDialog dialog = new ConfirmDeleteDialog(); 
dialog.setTargetFragment(RecipeFragment.this, REQUEST_CONFIRM_RC); 
Bundle b = new Bundle(); 
b.putString(ConfirmDeleteDialog.EXTRA_CONFIRM_DIALOG_TYPE, 
     ConfirmDeleteDialog.CONFIRM_DIALOG_TYPE.COMMIT.name()); // enum determines what to display 
dialog.setArguments(b); 
dialog.show(fm, "confirm delete"); 

संपादित करें।

मुझे लगता है कि आप * getActivity() प्राप्त कर सकते हैं। * getSupportFragmentManager()

+0

कोई getFragmentManager गतिविधि से एक को वापस नहीं। जावाडोक देखें। – Snicolas

+0

फिर आपको यह सुनिश्चित करने की ज़रूरत है कि आपके फ्रैगमेंट और डायलॉग फ्रैगमेंट क्लासेस दोनों v4 समर्थन लाइब्रेरी से हैं। (और FragmentManager) –

+0

आपको मेरा जवाब इतना ऊपर उठाना चाहिए;) – Snicolas

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