दिलचस्प पोस्ट
स्थिर कोशिकाओं के साथ UITableView दिखाई नहीं देता क्या इंटेलिएजे आईडीईए वेबस्टॉर्म और पीएचपीएसटॉम की सभी कार्यक्षमता प्लगइन्स के माध्यम से समाहित कर सकता है? ट्रस्ट स्टोर बनाम कुंजी स्टोर – मुख्य टोल के साथ बनाना असमर्थित प्रमुख.मोनोर संस्करण 52.0 एंड्रॉइड स्टूडियो में रेंडरिंग करते समय संदर्भ जावास्क्रिप्ट बिना वस्तु क्लोन करें IOS में फ़ाइल डाउनलोड और खोलना Regex के लिए वैकल्पिक: सभी उदाहरणों को इन उद्धरण चिह्नों के साथ नहीं मिला प्रोटोटाइप: उदाहरण के दायरे को एक्सेस करने के लिए "यह" की गहरी गुंजाइश अजीब जावा हैश फ़ंक्शन को समझना एनजी-क्लिक का उपयोग करके कोणीय जेएस में कक्षाएं जोड़ना और निकालना कैसे विंडोज बंद या लॉगऑफ का पता लगाने के लिए बैच में एक सूची को तोड़ने के लिए आम उपयोग मूल्यों के आधार पर मानचित्र <कुंजी, मान> सॉर्ट करें (जावा) पैरामाम्स कीवर्ड का उपयोग क्यों करें? फ़ायरबसे ऐप में सहयोगियों को कैसे जोड़ें?

मेरे 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); } } } 

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

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