2013-10-08 10 views
6

से कॉलिंग डायलॉग फ्रैगमेंट मैं अपने फ्रैगमेंट क्लास से डायलॉग फ्रैगमेंट को कॉल करने का प्रयास कर रहा हूं। मेरे पास एक इमेज व्यू है, और मैं अपने डायलॉग फ्रैगमेंट क्लास को इमेज व्यू के ऑनक्लिक लिस्टनर में कॉल करना चाहता हूं जिसे मैंने सेट अप किया है।फ्रैगमेंट

मुझे डायलॉगफ्रैगमेंट को कॉल करने का प्रयास करने वाले कोड के साथ ऑनक्लिक में एक त्रुटि मिल रही है।

मुझे "शो" पर एक त्रुटि मिल रही है "टाइप शो (FragmentManager, स्ट्रिंग) प्रकार में डायलॉगफ्रैगमेंट तर्क (FragmentManager, स्ट्रिंग)" के लिए लागू नहीं है और "नया उदाहरण" पर एक त्रुटि है "

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) 
{ 
    final View v = inflater.inflate(R.layout.image_detail_fragment, 
     container, false); 

    mImageView = (RecyclingImageView) v.findViewById(R.id.imageView); 
    mImageView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View arg0) { 
      //Here 
      MyDialogFragment dialog = MyDialogFragment.newInstance(); 
      dialog.show(getFragmentManager(), "fragmentDialog"); 
     } 
    }); 

    return v; 
} 

DialogFragment वर्ग: विधि newInstance() प्रकार MyDialogFragment "

यहाँ के लिए अपरिभाषित है मेरी कोड है

import android.app.AlertDialog; 
import android.app.Dialog; 
import android.app.DialogFragment; 
import android.content.Context; 
import android.content.DialogInterface; 
import android.os.Bundle; 

class MyDialogFragment extends DialogFragment { 

    Context mContext; 

    public MyDialogFragment() { 
     mContext = getActivity(); 
    } 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(mContext); 
     alertDialogBuilder.setTitle("Set Wallpaper?"); 
     alertDialogBuilder.setMessage("Are you sure?"); 
     //null should be your on click listener 
     alertDialogBuilder.setPositiveButton("OK", null); 
     alertDialogBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       dialog.dismiss(); 
      } 
     }); 

     return alertDialogBuilder.create(); 
    } 

    public static MyDialogFragment newInstance() { 
     MyDialogFragment = new MyDialogFragment; 
     return f; 
    } 
} 
+1

कृपया लॉगकैट जोड़ें। – Aleksandr

+1

और मैं आपकी स्थैतिक विधि नहीं देख सकता MyDialogFragment.newInstance() – Aleksandr

उत्तर

6

आप घ o newInstance नाम से एक स्थैतिक विधि नहीं है। अपने संवाद टुकड़ा में नीचे जोड़े

public static MyDialogFragment newInstance() { 
    MyDialogFragment f = new MyDialogFragment(); 
    return f; 
    } 

आप अधिक जानकारी और डॉक्स में एक उदाहरण

http://developer.android.com/reference/android/app/DialogFragment.html

+0

मुझे "MyDialogFragment" पर एरर मिल रहा है, "MyDialogFragment को एक चर के लिए हल नहीं किया जा सकता" और "f को चर के लिए हल नहीं किया जा सकता"। मैंने अपना कोड अपडेट किया है ताकि आप देख सकें कि यह कैसा दिखता है। – Jack

+2

सावधान रहें! सार्वजनिक स्थैतिक MyDialogFragment newInstance() { MyDialogFragment f = new MyDialogFragment(); वापसी एफ; } – Aleksandr

+0

@ अलेक्ज़ेंडर धन्यवाद ने इसे सुधार दिया। टाइप करने में गलती। – Raghunandan

0

और तुम भी MyDialogFragmentnewInstance विधि के बिना

DialogFragment newFragment = new MyDialogFragment(this); 
newFragment.show(getFragmentManager(), "date_picker"); 
की तरह कॉल कर सकते हैं पा सकते हैं