2012-08-10 19 views
9

मैं विकल्प मेनू पर इस कोड को यहाँएंड्रॉयड: DatePicker और DatePicker संवाद

Dialog dialog = new Dialog(ScheduleActivity.this); 
dialog.setTitle("Add Event"); 
dialog.setContentView(R.layout.add_even_on); 
Button datePicker = (Button) dialog.findViewById(R.id.datePicker); 
final DialogFragment dateFrag = new MyDatePicker(); 
    datePicker.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       dateFrag.show(getSupportFragmentManager(), "datePicker");    
      } 
     }); 
dialog.show(); 

जब कहते हैं, विकल्प मेनू पर "घटना जोड़ें" क्लिक किया जाता है, एक संवाद प्रकट होता है, एक बटन है कि एक से पता चलता साथ DatePickerDialog और इसके बगल में टेक्स्ट व्यू है जो दिनांकपिकरडियलॉग में चुनी गई तारीख को दर्शाता है, यहां क्लासिक I Android डेवलपर से प्राप्त क्लास है जो डेटपिकरडियलॉग का उपयोग करने के तरीके पर है।

class MyDatePicker extends DialogFragment implements DatePickerDialog.OnDateSetListener { 
int pYear; 
int pDay; 
int pMonth; 

@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); 
    } 

    public void onDateSet(DatePicker view, int year, int month, int day) { 
    pYear = year; 
    pDay = day; 
    pMonth = month; 
    } 
} 

तो मेरी समस्या यह है कि मैं कैसे सीमा मिलीसेकन्ड में मूल्य मिलता है जब मैं क्लिक DatePickerDialog जो बारी में स्वचालित रूप से इसे बंद कर देता है पर "सेट", और मेरे संवाद करने के लिए रिटर्न जो बटन जो DatePickerDialog और खोलने होता है एक TextView जो watever तारीख DatePickerDialog चुना जाता है को दर्शाता है ... मैं एक मैं DatePickerDialog अंदर चुना है ...

यहाँ मैं क्या मतलब है की एक तस्वीर है,

तो जब मैं पिक पर क्लिक दिखाने के नहीं होते दिनांक बटन एक दिनांक पिकरडियलॉग बॉक्स अगली तस्वीर पर दिखाई देने जैसा दिखाई देता है

enter image description here

और जब मैं सेट पर क्लिक करें, मैं DatePickerDialog

उत्तर

13

यहाँ मैं प्रदान करें कि कुछ कोड आशा है कि यह आप में मदद करता है से millseconds में मूल्य को ध्यान में रखना .. चाहता था

public class NewReminder extends Activity { 
private static final int DATE_DIALOG_ID = 1; 
private int year; 
private int month; 
private int day; 
EditText editTextDate; 
private String currentDate; 
private Context context; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.addnewreminder); 
    initialize(); 
    context = getApplicationContext(); 
    OnClickListener listenerDate = new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 

      final Calendar c = Calendar.getInstance(); 
      year = c.get(Calendar.YEAR); 
      month = c.get(Calendar.MONTH); 
      day = c.get(Calendar.DAY_OF_MONTH); 
      showDialog(DATE_DIALOG_ID); 
     } 
    }; 
    editTextDate.setOnClickListener(listenerDate); 

} 

private void initialize() { 
    // TODO Auto-generated method stub 

    editTextDate = (EditText) findViewById(R.id.editTextDate); 

} 


private void updateDisplay() { 
    currentDate = new StringBuilder().append(day).append(".") 
      .append(month + 1).append(".").append(year).toString(); 

    Log.i("DATE", currentDate); 
} 

OnDateSetListener myDateSetListener = new OnDateSetListener() { 

    @Override 
    public void onDateSet(DatePicker datePicker, int i, int j, int k) { 

     year = i; 
     month = j; 
     day = k; 
     updateDisplay(); 
     editTextDate.setText(currentDate); 
    } 
}; 



@Override 
protected Dialog onCreateDialog(int id) { 
    switch (id) { 
    case DATE_DIALOG_ID: 
     return new DatePickerDialog(this, myDateSetListener, year, month, 
       day); 
    } 
    return null; 
} 
} 
+0

यह है मैं क्या किया करने के लिए कोठरी है, कठिन मैं कुछ सुधार किए हैं और मैं पूरी तरह से अपने सभी तरीकों का इस्तेमाल किया नहीं था, लेकिन मेरा करने के लिए पर्याप्त अपने पास .. tnx – lemoncodes

+2

शोडियलॉग (DATE_DIALOG_ID); पदावनत किया गया है। इसके बजाय संवाद खंड का उपयोग करें http://stackoverflow.com/questions/11220820/the-method-showdialogint-from-the-type-activity-is-deprecated-in-android http://stackoverflow.com/questions/12710092/how -to-use-fragmentmanager-to-sobstitute-the-deprecated-showdialog –

13

पुराने संवाद बहिष्कृत हैं। लागू करता टुकड़े:

public class YourActivity extends FragmentActivity 

बनाएं टुकड़ा संवाद:

public class TimePickerFragment extends DialogFragment { 

    private OnDateSetListener listener; 

    public TimePickerFragment(OnDateSetListener listener) { 
     this.listener=listener; 
    } 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     // Use the current time as the default values for 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 TimePickerDialog and return it 
     return new DatePickerDialog(getActivity(), listener, year,month,day); 
    } 

} 

लागू करता है इंटरफेस (पैकेज: आयात android.app.DatePickerDialog.OnDateSetListener):

टुकड़ा गतिविधि करने के लिए अपने गतिविधि माइग्रेट

public class YourActivity extends FragmentActivity implements OnDateSetListener{ 

    @Override 
    public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) { 

    } 

} 

शोडिअलॉग फ़ंक्शन जोड़ें:

public class YourActivity extends FragmentActivity implements OnDateSetListener{ 

    showDateDialog(){ 

     FragmentManager fm = getSupportFragmentManager(); 
     TimePickerFragment newFragment = new TimePickerFragment(this); 
     newFragment.show(fm, "date_picker"); 

    } 

    @Override 
    public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) { 

    } 

} 
+0

एक आकर्षण की तरह काम करता है। –

+0

क्या होगा अगर अगली बार जब कोई व्यक्ति दिखने के लिए टुकड़ा प्राप्त करने के लिए बटन क्लिक करता है तो मैं चाहता हूं कि तिथि उपयोगकर्ता द्वारा चुनी गई अंतिम तिथि हो? –

+0

आप नए इंस्टेंस स्क्वामा के साथ पैरा या प्रारंभिक पैरा भेजते हैं: http://developer.android.com/reference/android/app/DialogFragment.html – Hpsaturn

1

आप इस कोड को आजमा सकते हैं .. यह निश्चित रूप से आपके लिए सहायक होगा .. कोई शक नहीं!

protected Dialog onCreateDialog(int id) { 

    Calendar c=Calendar.getInstance(); 
    int Sysday=c.get(Calendar.DAY_OF_MONTH); 
    int Sysmonth=c.get(Calendar.MONTH); 
    int Sysyear=c.get(Calendar.YEAR); 

    int Sysmin=c.get(Calendar.MINUTE); 
    int Syshour=c.get(Calendar.HOUR); 


    switch (id) { 
    case TIME_DIALOG: 

     return new TimePickerDialog(this, myTimePicker , Syshour, Sysmin, false); 

    case DATE_DIALOG: 
     return new DatePickerDialog(this, myDatePicker, Sysyear, Sysmonth, Sysday); 
    } 
    return null; 
} 
1

यह मेरा सहायक समारोह जो पैरामीटर के रूप में संदर्भ और TextView हो और कि पाठ दृश्य पर दिनांक सेट जब उपयोगकर्ता एक तिथि का चयन है:

 public static void showDate(final Context context, final TextView textView) { 

    if (textView != null) { 
     final Calendar myCalendar = Calendar.getInstance(); 
     DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() { 
      @Override 
      public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
       // TODO Auto-generated method stub 
       myCalendar.set(Calendar.YEAR, year); 
       myCalendar.set(Calendar.MONTH, monthOfYear); 
       myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth); 
       String myFormat = "MM/dd/yy"; // In which you need put here 
       SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US); 
       //UIHelper.showLongToastInCenter(context, sdf.format(myCalendar.getTime())); 
       textView.setText(sdf.format(myCalendar.getTime())); 
      } 

     }; 
     new DatePickerDialog(context, date, myCalendar.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH), myCalendar.get(Calendar.DAY_OF_MONTH)).show(); 
    } else { 
     UIHelper.showLongToastInCenter(context, "Unable to show Date picker"); 
    } 
} 
4

एक्सएमएल में एक TextView और एक बटन जोड़ने

जावा फ़ाइल में निम्न कोड
<TextView 
    android:id="@+id/searchText" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="TextView" /> 

<Button 
    android:id="@+id/search" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Search" /> 

जोड़ें

public class DatePickerDialogExample extends Activity { 

    TextView txtDate; 
    private int mYear, mMonth, mDay, mHour, mMinute; 

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


     txtDate = (TextView) findViewById(R.id.searchText); 
     Button search = (Button) findViewById(R.id.search); 
     search.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // Process to get Current Date 
      final Calendar c = Calendar.getInstance(); 
      mYear = c.get(Calendar.YEAR); 
      mMonth = c.get(Calendar.MONTH); 
      mDay = c.get(Calendar.DAY_OF_MONTH); 

      // Launch Date Picker Dialog 
      DatePickerDialog dpd = new DatePickerDialog(PrayTimeActivity.this, 
        new DatePickerDialog.OnDateSetListener() { 

         @Override 
         public void onDateSet(DatePicker view, int year, 
           int monthOfYear, int dayOfMonth) { 
          // Display Selected date in textbox 
          txtDate.setText(dayOfMonth + "-" 
            + (monthOfYear + 1) + "-" + year); 

         } 
        }, mYear, mMonth, mDay); 
       dpd.show(); 
      } 
     }); 


    } 

} 
0
Calendar c1 = Calendar.getInstance();  
int year = c1.get(Calendar.YEAR); 
int month = c1.get(Calendar.MONTH); 
int day = c1.get(Calendar.DAY_OF_MONTH); 
DatePickerDialog.OnDateSetListener myDateListener = new DatePickerDialog.OnDateSetListener() { 

     public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) { 
        if(arg0.isShown()){ 

            //do further code here 

           } 
          } 

          }; 
     DatePickerDialog dp = new DatePickerDialog(YourActivity.this, myDateListener, year, month, day); 
     dp.show();  
1

इस कोड का प्रयास करें यह निश्चित रूप से काम है:

  final Calendar c = Calendar.getInstance(); 
      mYear = c.get(Calendar.YEAR); 
      mMonth = c.get(Calendar.MONTH); 
      mDay = c.get(Calendar.DAY_OF_MONTH); 

      DatePickerDialog dpd = new DatePickerDialog(getActivity(), 
        new DatePickerDialog.OnDateSetListener() { 

         @Override 
         public void onDateSet(DatePicker view, int year, 
           int monthOfYear, int dayOfMonth) { 

          birth_Date.setText(dayOfMonth + "-" 
            + (monthOfYear + 1) + "-" + year); 
         } 
        }, mYear, mMonth, mDay); 
      dpd.show();