2013-02-27 210 views
18

मैंने इस पर कई पोस्ट पढ़ी हैं लेकिन मुझे इस मामले पर लागू कोई भी नहीं मिल रहा है।डायलॉग फ्रैगमेंट से रिटर्निंग स्ट्रिंग को वापस गतिविधि

मेरे पास एक समय पिकर संवाद है और मैंने एक स्ट्रिंग में पूर्णांक मानों को एक साथ रखा है और मुझे इस स्ट्रिंग को मुख्य गतिविधि में वापस लाने की आवश्यकता है।

इस स्ट्रिंग मान का उपयोग तब बटन के टेक्स्ट को सेट करने के लिए किया जाएगा।

अगर कोई मेरी मदद कर सकता है तो इसकी सराहना की जाएगी।

आप

संवाद टुकड़ा

public class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener { 
    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     // Use the current time as the default values for the picker 
     final Calendar c = Calendar.getInstance(); 
     int hour = c.get(Calendar.HOUR_OF_DAY); 
     int minute = c.get(Calendar.MINUTE); 

     // Create a new instance of TimePickerDialog and return it 
     return new TimePickerDialog(getActivity(), this, hour, minute, DateFormat.is24HourFormat(getActivity())); 
    } 

    public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
     // Do something with the time chosen by the user 
     String Time =Integer.toString(hourOfDay) + " : " + Integer.toString(minute); 
    } 
} 

कोड

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_second); 


     Button btn = (Button) findViewById(R.id.start_time_button); 
     Button.setText(Time); 


    } 

उत्तर

48

पसंदीदा तरीका एक कॉलबैक उपयोग करने के लिए एक Fragment से एक संकेत प्राप्त करने के लिए है धन्यवाद। साथ ही, यह एंड्रॉइड द्वारा Communicating with the Activity

आपके उदाहरण के लिए, अपने DialogFragment में, एक इंटरफ़ेस जोड़ें और इसे पंजीकृत करें।

public static interface OnCompleteListener { 
    public abstract void onComplete(String time); 
} 

private OnCompleteListener mListener; 

// make sure the Activity implemented it 
@Override 
public void onAttach(Activity activity) { 
    super.onAttach(activity); 
    try { 
     this.mListener = (OnCompleteListener)activity; 
    } 
    catch (final ClassCastException e) { 
     throw new ClassCastException(activity.toString() + " must implement OnCompleteListener"); 
    } 
} 

अब आप अपने DialogFragment में अपने Activity

public class MyActivity extends Activity implements MyDialogFragment.OnCompleteListener { 
    //... 

    public void onComplete(String time) { 
     // After the dialog fragment completes, it calls this callback. 
     // use the string here 
    } 
} 

अब में इस इंटरफ़ेस लागू, जब कोई उपयोगकर्ता ठीक बटन क्लिक करता है, कि मूल्य वापस Activity लिए भेज अपने कॉलबैक के माध्यम से।

public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
    String time = Integer.toString(hourOfDay) + " : " + Integer.toString(minute); 
    this.mListener.onComplete(time); 
} 
+0

आपके उत्तर के लिए धन्यवाद, केवल थोड़ी सी बात मैं गतिविधि में कक्षा के बारे में अनिश्चित हूं। 'FragmentActivity' – user2059311

+0

'FragmentActivity'' के लिए मैं क्या डालूं, बस आपकी 'गतिविधि' है। आप इसे वहां भी कार्यान्वित कर सकते हैं। मैं जवाब अपडेट करूंगा। – Kirk

+0

मुझे लगता है कि यह लगभग काम कर रहा है, मेरे पास लाइन – user2059311