2013-12-16 2 views
1

Пожалуйста, помогите мне получить дату из календаря. Идея заключается в том, что пользователь должен выбрать дату. После этого дата вернулась к основной Деятельности. Я пытаюсь сделать так:Как получить дату из андроидного календаря?

Calendar today = Calendar.getInstance(); 

Uri uriCalendar = Uri.parse("content://com.android.calendar/time/" + String.valueOf(today.getTimeInMillis())); 
Intent intentCalendar = new Intent(Intent.ACTION_DATE_CHANGED,uriCalendar);    
startActivity(intentCalendar); 

но открыт только календарь и я не могу выбрать дату. Thanks =)

+0

У вас есть код, который фиксирует выбор пользователя? – Houseman

+0

№ Как я могу это сделать? – user3085327

+0

Посмотрите на это: http://developer.android.com/guide/topics/ui/controls/pickers.html Это не календарь, но вы можете выбрать дату. Также см. Это: http://stackoverflow.com/questions/3712710/android-calendar-view-for-date-picker – Houseman

ответ

1

Я использую это, и он работает для меня Один дополнительный совет, для сложных манипуляций датами, я предпочитаю Joda Time over Calendar. Я действительно рекомендую это.

change_date_but = (Button) findViewById(R.id.c_change_button_id); 
    change_date_but.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // DatePickerDialog DPD = new DatePickerDialog(this, 
      // mDatesetlistener, mYear, mMonth, mDay); 
      DatePickerDialog DPD = new DatePickerDialog(
        AddEditChildren.this, mDateSetListener, mYear, mMonth, 
        mDay); 
       DPD.show(); 

     } 
    }); 

    private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() { 
    public void onDateSet(DatePicker view, int year, int monthOfYear, 
      int dayOfMonth) { 
     mYear = year; 
     mMonth = monthOfYear; 
     mDay = dayOfMonth; 
     updateDisplay(); 
    } 
}; 

// Я использую это, чтобы показать хороший формат даты

private void updateDisplay() { 
    // TODO Auto-generated method stub 
    if(mMonth+1<10 && mDay >10) 
     date.setText(new StringBuilder() 
     .append(mYear).append("-").append("0").append(mMonth + 1).append("-").append(mDay)); 
    else if(mMonth+1>10 && mDay<10) 
     date.setText(new StringBuilder() 
     // Month is 0 based so add 1 
     .append(mYear).append("-").append(mMonth + 1).append("-").append("0").append(mDay)); 

    else if(mMonth+1<10 && mDay<10) 
     date.setText(new StringBuilder() 
     // Month is 0 based so add 1 
     .append(mYear).append("-").append("0").append(mMonth + 1).append("-").append("0").append(mDay)); 
    else 
     date.setText(new StringBuilder() 
      // Month is 0 based so add 1 
     .append(mYear).append("-").append(mMonth + 1).append("-").append(mDay)); 
} 
+0

Вам не нужен StringBuilder в каждой ветке. Просто присоединитесь к «+». Компилятор будет оптимизирован, и он будет намного лучше читабельным. – Moritz

Смежные вопросы