Popup DatePicker для EditText

Пробовал посмотреть на другие вопросы здесь относительно появления DatePickers для EditText но у меня были проблемы с его работой.

Я видел примеры, где вы можете использовать setOnClickListener или setOnTouchListener , какой из них был бы лучшим?

Также я видел пару разных дизайнов для DatePicker , как вы меняете дизайн?

Ниже мой код до сих пор, попробовал использовать код из других примеров, но не смог заставить его работать.

 import android.app.Activity; import android.os.Bundle; import android.widget.EditText; import android.widget.TextView; /** * Created by MOS182 on 7/21/13. */ public class AddReminder extends Activity { TextView Title, Amount, PaymentDate, ReminderDate, ReminderTime; EditText eTitle, eAmount, ePaymentDate, eReminderDate, eReminderTime; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.reminders_dialog); initializeVariables(); } private void initializeVariables() { Title = (TextView) findViewById(R.id.tvTitle); Amount = (TextView) findViewById(R.id.tvAmount); PaymentDate = (TextView) findViewById(R.id.tvPaymentDate); ReminderDate = (TextView) findViewById(R.id.tvReminderDate); ReminderTime = (TextView) findViewById(R.id.tvReminderTime); eTitle = (EditText) findViewById(R.id.etTitle); eAmount = (EditText) findViewById(R.id.etAmount); ePaymentDate = (EditText) findViewById(R.id.etPaymentDate); eReminderDate = (EditText) findViewById(R.id.etReminderDate); eReminderTime = (EditText) findViewById(R.id.etReminderTime); } } 

Я использовал метод setOnClickListener EditText чтобы показать DatePicker .

А затем в xml-файле установите свойство EditText android:focusable="false" что вы можете избежать фокусировки и виртуальных клавиатур.

 yourEditText.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub //To show current date in the datepicker Calendar mcurrentDate=Calendar.getInstance(); mYear=mcurrentDate.get(Calendar.YEAR); mMonth=mcurrentDate.get(Calendar.MONTH); mDay=mcurrentDate.get(Calendar.DAY_OF_MONTH); DatePickerDialog mDatePicker=new DatePickerDialog(**YourActivityName**.this, new OnDateSetListener() { public void onDateSet(DatePicker datepicker, int selectedyear, int selectedmonth, int selectedday) { // TODO Auto-generated method stub /* Your code to get date and time */ } },mYear, mMonth, mDay); mDatePicker.setTitle("Select date"); mDatePicker.show(); } }); 

Попробуйте этот … комментировать свои мысли … спасибо ..

 /* create calndar object */ Calendar myCalendar = Calendar.getInstance(); /* find textview*/ date = (TextView) findViewById(R.id.stdate); /* and copy the fallowing code*/ final DatePickerDialog.OnDateSetListener datePickerListener = 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 = "dd/MMM/yyyy"; //In which you need put here SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.UK); date.setText(sdf.format(myCalendar.getTime())); } }; date.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { new DatePickerDialog(MainActivity.this, datePickerListener, myCalendar .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH), myCalendar.get(Calendar.DAY_OF_MONTH)).show(); } }); 

Для более старых API, т.е. я все еще пытаюсь поддерживать 16 … так:

От http://javapapers.com/android/android-datepicker/

Вы можете использовать DialogFragment, который реализует DatePickerDialog в качестве примера:

 public static class SelectDateFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener { // Thanks to -> http://javapapers.com/android/android-datepicker/ EditText mEditText; public SelectDateFragment(EditText mEditText){ this.mEditText = mEditText; } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { final Calendar calendar = Calendar.getInstance(); int yy = calendar.get(Calendar.YEAR); int mm = calendar.get(Calendar.MONTH); int dd = calendar.get(Calendar.DAY_OF_MONTH); return new DatePickerDialog(getActivity(), this, yy, mm, dd); } public void onDateSet(DatePicker view, int yy, int mm, int dd) { populateSetDate(mEditText, yy, mm+1, dd); } } public void selectDate() { DialogFragment newFragment = new SelectDateFragment(editText); newFragment.show(getFragmentManager(), "DatePicker"); } public static void populateSetDate(EditText mEditText, int year, int month, int day) { mEditText.setText(month+"/"+day+"/"+year); } 

В вашей деятельности вы задаете значение editText по мере необходимости:

 private EditText editText; //... 

Прикрепите прослушиватель onclick:

  editText.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { selectDate(); } }); 
Intereting Posts
Невозможно использовать лямбда-функции в Android с Java 1.8 Способы прокси-сервера InputStream Закрытие приложения из моего приложения Как избежать множественных экземпляров фрагментов в Activity после приложения убито и возобновлено? Android: как использовать более одного пакета в конфигурации приложения Facebook Multi Window не работает Почему приложение неожиданно закрывается, не вызывая никаких ошибок? Правила подключения к постоянным сокетам Android Как заблокировать ориентацию фрагмента без фиксации ориентации активности? Состояние приостановки приложения / возобновления Emulate Back Button с наложением в Android Как (и где) исправить android.os.BadParcelableException: ClassNotFoundException при unmarshalling: RecyclerView $ SavedState? Объект соединения SQLite просочился – Android Использование библиотеки дизайна Google, как скрыть кнопку FAB в прокрутке вниз? Установите GoogleMapOptions для подкласса MapFragment