दिलचस्प पोस्ट
Python के अनुरोध मॉड्यूल का उपयोग करके वेबसाइट पर "लॉग इन" कैसे करें? Google मानचित्र API v3 – सेट सीमा और केंद्र `पाप` के अपरिभाषित संदर्भ पायथन स्क्रिप्ट आउटपुट विंडो को कैसे खोलें? बड़ी संख्या (बीग्नम) को संभालने के लिए जावास्क्रिप्ट में मानक समाधान क्या है? एसक्यूएल – एक तालिका से रिकॉर्ड खोजें जो दूसरे में मौजूद नहीं है आप SQL सर्वर तालिका की प्राथमिक कुंजी कैसे सूचीबद्ध करते हैं? पुनर्निर्माण और स्वच्छ के बीच अंतर + दृश्य स्टूडियो में बिल्ड यूआरएल एन्कोडिंग स्पेस वर्ण: + या% 20? कैसे jQuery का उपयोग कर एक सरल पॉपअप उत्पन्न करने के लिए विंडो का उपयोग करने के लिए सर्वश्रेष्ठ अभ्यास कैसे डिफ़ॉल्ट जावा ढेर आकार निर्धारित है? कैसे विंडोज 8 रनटाइम (WinRT / विंडोज स्टोर ऐप / विंडोज़ 10 यूनिवर्सल ऐप) सिल्वरलाइट और डब्ल्यूपीएफ की तुलना में है? जीमेल मेल सर्वर का इस्तेमाल करते हुए स्थानीय होस्ट से एक्सएमएमपी PHP में चलाना IE7 डिस्प्ले नहीं समझता: इनलाइन-ब्लॉक

मेरे DatePickerFragment से प्रारूपित दिनांक स्ट्रिंग कैसे स्थानांतरित करें?

आधिकारिक डॉक्टर http://developer.android.com/guide/topics/ui/controls/pickers.html#DatePicker के बाद

मैंने सिर्फ एक ही कोड का उपयोग किया है, और onDateSet विधि में केवल परिणाम स्वरूपण जोड़ा है:

 public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // Use the current date as the default date in the picker final Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH); int day = c.get(Calendar.DAY_OF_MONTH); // Create a new instance of DatePickerDialog and return it return new DatePickerDialog(getActivity(), this, year, month, day); } @Override public void onDateSet(DatePicker view, int year, int month, int day) { Calendar c = Calendar.getInstance(); c.set(year, month, day); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String formattedDate = sdf.format(c.getTime()); // How to get the string from here to the caller? } } 

परीक्षण के लिए, कॉलर गतिविधि केवल TextView दिखाती है और जब उपयोगकर्ता विजेट को छूता है तो पिकर को कॉल करता है:

 public class OrderHeadEditActivity extends Activity { private TextView mDTDelivery; ... @Override protected void onCreate(Bundle bundle) { ... mDTDelivery = (TextView) findViewById(R.id.order_head_view_dt_delivery); ... mDTDelivery.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { DialogFragment picker = new DatePickerFragment(); picker.show(getFragmentManager(), "datePicker"); } }); } ... } 

दिनांक पिकर प्रदर्शित होता है, और उस स्थान पर ब्रेकपॉइंट सेट करने के बाद जहां परिणाम स्ट्रिंग में स्वरूपित होता है, मैं देख सकता हूँ कि यह काम करता है।

हालांकि, मुझे नहीं पता कि स्ट्रिंग मान को कैसे वापस mtDTDelivery विजेट पर देना है?

वेब के समाधान से एकत्रित समाधान "मेरे DatePickerFragment से प्रारूपित दिनांक स्ट्रिंग कैसे स्थानांतरित करें?"

जैसा कि तुकज ने बताया है कि आप इंटरफ़ेस पद्धति का उपयोग कर सकते हैं या आप अपनी गतिविधि वर्ग के डैटपीकर वर्ग को एक आंतरिक वर्ग बना सकते हैं, जिस स्थिति में यह स्थिर होना चाहिए और आपको बाहरी क्लास की कमजोरियों की आवश्यकता है

इंटरफ़ेस का उपयोग करना

DatePickerFragment में एक इंटरफ़ेस को परिभाषित करें। अपनी गतिविधि वर्ग में इंटरफ़ेस लागू करें और तिथि को टेक्स्ट विज़िट पर सेट करें।

 public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener { TheListener listener; public interface TheListener{ public void returnDate(String date); } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // Use the current date as the default date in the picker final Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH); int day = c.get(Calendar.DAY_OF_MONTH); listener = (TheListener) getActivity(); // Create a new instance of DatePickerDialog and return it return new DatePickerDialog(getActivity(), this, year, month, day); } @Override public void onDateSet(DatePicker view, int year, int month, int day) { Calendar c = Calendar.getInstance(); c.set(year, month, day); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String formattedDate = sdf.format(c.getTime()); if (listener != null) { listener.returnDate(formattedDate); } } } 

मुख्य गतिविधि

 public class MainActivity extends Activity implements DatePickerFragment.TheListener{ Button b; TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); b= (Button) findViewById(R.id.button1); tv= (TextView) findViewById(R.id.textView1); b.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub DialogFragment picker = new DatePickerFragment(); picker.show(getFragmentManager(), "datePicker"); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public void returnDate(String date) { // TODO Auto-generated method stub tv.setText(date); } } 

दूसरा तरीका यह निश्चित नहीं है कि यह सबसे अच्छा तरीका है। मैं उपरोक्त अंतरफलक पद्धति की सिफारिश करेगा।

 public class MainActivity extends Activity {//implements DatePickerFragment.TheListener{ Button b; TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); b= (Button) findViewById(R.id.button1); tv= (TextView) findViewById(R.id.textView1); b.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub DialogFragment picker = new DatePickerFragment(); picker.show(getFragmentManager(), "datePicker"); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } public static class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener { private WeakReference<MainActivity> mActivity; @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // Use the current date as the default date in the picker final Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH); int day = c.get(Calendar.DAY_OF_MONTH); mActivity = new WeakReference<MainActivity>((MainActivity) getActivity()); // Create a new instance of DatePickerDialog and return it return new DatePickerDialog(getActivity(), this, year, month, day); } @Override public void onDateSet(DatePicker view, int year, int month, int day) { Calendar c = Calendar.getInstance(); c.set(year, month, day); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String formattedDate = sdf.format(c.getTime()); MainActivity target = mActivity.get(); if (target != null) target.tv.setText(formattedDate); } } } 

स्ट्रिंग को पारित करने की गतिविधि के लिए एक कॉलबैक बनाने का उचित तरीका है

एक गतिविधि के साथ संचार करने पर एक नज़र डालें