Как использовать OnDateChangedListener, OnDatesetListener без использования DatePickerDialog? -- android поле с участием datepicker поле с участием datepickerdialog пол Связанный проблема

How to use OnDateChangedListener, OnDateSetListener without using DatePickerDialog?


6
vote

проблема

русский

Я хочу иметь возможность обнаруживать изменения в DatePicker, как только пользователь начинает менять его. Однако я не хочу использовать datrpickerdialog. Кто-нибудь знает, почему ondateSetet (DatePicker arg0, int arg1, int arg2, int arg3) не огонь, когда я измени, когда я измените дату на DatePicker?

Я бы очень ценил любой комментарий на это. Ура

Вот упрощенная версия моего кода:

 <код> public class AddItem extends Activity  implements OnDateChangedListener,OnDateSetListener{  DatePicker start ;  public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.entryelements);     start = (DatePicker) findViewById(R.id.start);  @Override public void onDateChanged(DatePicker view, int year, int monthOfYear,         int dayOfMonth) {      // TODO Auto-generated method stub     Toast.makeText(getApplicationContext(),             " thiv view"+year,             Toast.LENGTH_LONG).show();     Log.v("indatechange", "ok");  }  @Override public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) {     // TODO Auto-generated method stub     Toast.makeText(getApplicationContext(),             " thiv view"+arg0,             Toast.LENGTH_LONG).show();     Log.v("indatechange", "ok"); }   

}

Английский оригинал

I want to be able to detect changes on datepicker as soon as user starts to change it. However, I don't want to use datrpickerdialog. Does anyone know why the onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) doesn't fire when I change the date on datepicker?

I would highly appreciate any comment on that. Cheers

Here is the simplified version of my code:

public class AddItem extends Activity  implements OnDateChangedListener,OnDateSetListener{  DatePicker start ;  public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.entryelements);     start = (DatePicker) findViewById(R.id.start);  @Override public void onDateChanged(DatePicker view, int year, int monthOfYear,         int dayOfMonth) {      // TODO Auto-generated method stub     Toast.makeText(getApplicationContext(),             " thiv view"+year,             Toast.LENGTH_LONG).show();     Log.v("indatechange", "ok");  }  @Override public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) {     // TODO Auto-generated method stub     Toast.makeText(getApplicationContext(),             " thiv view"+arg0,             Toast.LENGTH_LONG).show();     Log.v("indatechange", "ok"); } 

}

</div
        

Список ответов

8
 
vote

Вам нужно рассказать DatePicker о вашем OnDateChangedListener. В отличие от обычных виджетов Дата DatyPicker не имеет 0[2349]-[1-9]d{6} 1 ... но у него есть <Код> 0[2349]-[1-9]d{6} 2 . Используйте <код> 0[2349]-[1-9]d{6} 3 , чтобы установить дату по умолчанию и объявить слушатель вместе:

 <код> 0[2349]-[1-9]d{6} 4  
 

You need to tell the DatePicker about your OnDateChangedListener. Unlike regular widgets a DatePicker does not have setOnDateChangedListener()... but it does have init(). Use init() to set the default date and declare the listener together:

public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.entryelements);      // Set the date to now     Calendar calendar = Calendar.getInstance();     start = (DatePicker) findViewById(R.id.start);     start.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), this); } 
</div
 
 
0
 
vote

Вам нужно позвонить в init (год, месяц, день, ondatechangedListener) Метод на дату, чтобы настроить его, если вы хотите быть активно проинформированным об взаимодействиях.

Предполагая, что вы хотите инициализировать его, чтобы показать определенную дату начать с того, что имеет смысл вызывать это вместо его обновленного метода (который вы делаете? Или вы не заботитесь о том, что является начальным значением?)

Обратите внимание, что он не поддерживает OnDatesEtListener, как дата DatyPickerDialog, поскольку это будет подразумевать, что UI имеет какой-то способ узнать, когда пользователь выполнен, взаимодействуя с выборами. Поскольку это не диалог, вы должны решить себя, когда вы думаете, что они сделали. Просто держите трек с OnDateChangeDleStener, и это будет иметь смысл.

 

You'll need to call the init(year, month, day, onDateChangedListener) method on your DatePicker to set it up, if you want to be proactively informed of interactions.

Assuming you want to initialize it to show a particular date to begin with, it makes sense to call this instead of its updateDate method (which is what you're doing? Or are you not caring what the starting value is?)

Note that it doesn't support an OnDateSetListener the way DatePickerDialog does, since that would imply that the UI has some way of knowing when the user is done interacting with the picker. Since it's not a dialog, you have to decide yourself when you think they're done. Just keep track with the OnDateChangedListener, and it'll make sense.

</div
 
 
0
 
vote
 <код> public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.entryelements); start = (DatePicker) findViewById(R.id.start);  expirationDate=(EditText) findViewById(R.id.expirationDate); Calendar calendar = Calendar.getInstance(); start = (DatePicker) findViewById(R.id.start); MyOnDateChangeListener onDateChangeListener = new MyOnDateChangeListener(); start.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), onDateChangeListener); }  public class MyOnDateChangeListener implements OnDateChangedListener {     @Override     public void onDateChanged(DatePicker view, int year, int month, int day) {         int mon=month+1;         expirationDate.setText(day+"/"+mon+"/"+year);     } }   
 
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.entryelements); start = (DatePicker) findViewById(R.id.start);  expirationDate=(EditText) findViewById(R.id.expirationDate); Calendar calendar = Calendar.getInstance(); start = (DatePicker) findViewById(R.id.start); MyOnDateChangeListener onDateChangeListener = new MyOnDateChangeListener(); start.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), onDateChangeListener); }  public class MyOnDateChangeListener implements OnDateChangedListener {     @Override     public void onDateChanged(DatePicker view, int year, int month, int day) {         int mon=month+1;         expirationDate.setText(day+"/"+mon+"/"+year);     } } 
</div
 
 
0
 
vote
 <код> DatePicker dpEndDate,dpStartDate; dpStartDate=(DatePicker)findViewById(R.id.dpStartDate); dpEndDate=(DatePicker)findViewById(R.id.dpEndDate);   Calendar today = Calendar.getInstance();         dpStartDate.init(today.get(Calendar.YEAR),                 today.get(Calendar.MONTH),                 today.get(Calendar.DAY_OF_MONTH),                 new DatePicker.OnDateChangedListener() {                     @Override                     public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {                         SmartUtils.ting(MicaAttendanceFilter.this,"Start Date Changes");                         try {                             SimpleDateFormat simpleDateFormat=new SimpleDateFormat("dd M yyyy");                             Calendar startCalendar = Calendar.getInstance();                             int startDay=dpStartDate.getDayOfMonth();                             int startMonth=dpStartDate.getMonth()+1;                             int startYear=dpStartDate.getYear();                             String startDate = startDay+" "+startMonth+" "+startYear;                             startCalendar.setTime(simpleDateFormat.parse(startDate));                             dpEndDate.setMinDate(startCalendar.getTimeInMillis());                         } catch (ParseException e) {                             e.printStackTrace();                         }                     }                 }         );   
 
DatePicker dpEndDate,dpStartDate; dpStartDate=(DatePicker)findViewById(R.id.dpStartDate); dpEndDate=(DatePicker)findViewById(R.id.dpEndDate);   Calendar today = Calendar.getInstance();         dpStartDate.init(today.get(Calendar.YEAR),                 today.get(Calendar.MONTH),                 today.get(Calendar.DAY_OF_MONTH),                 new DatePicker.OnDateChangedListener() {                     @Override                     public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {                         SmartUtils.ting(MicaAttendanceFilter.this,"Start Date Changes");                         try {                             SimpleDateFormat simpleDateFormat=new SimpleDateFormat("dd M yyyy");                             Calendar startCalendar = Calendar.getInstance();                             int startDay=dpStartDate.getDayOfMonth();                             int startMonth=dpStartDate.getMonth()+1;                             int startYear=dpStartDate.getYear();                             String startDate = startDay+" "+startMonth+" "+startYear;                             startCalendar.setTime(simpleDateFormat.parse(startDate));                             dpEndDate.setMinDate(startCalendar.getTimeInMillis());                         } catch (ParseException e) {                             e.printStackTrace();                         }                     }                 }         ); 
</div
 
 

Связанный проблема

4  Создайте VCARD, который можно скачать на Android с помощью ASP.NET  ( Generate vcard that can be downloaded on android using asp net ) 
Я пробую довольно некоторое время, чтобы сгенерировать VCARD, используя ASP.NET (C #), которые можно загрузить на устройство Android. Процесс генерации карт...

0  Android использует RecyClerview с локальной библиотекой RecyClerview вместо загрузки его из Maven Repo  ( Android use recyclerview with local recyclerview library instead of loading it f ) 
Я пытаюсь использовать RecyClerview в моем проекте, но потому что у нас есть несколько плохих прокси, я не могу позволить себе добавить компиляцию <код> "com....

0  Набор ToggleButton состояние из входящих данных JSON  ( Set togglebutton status from incoming json data ) 
<Р> Я пытаюсь следовать Android учебник , чтобы изменить базу данных MySQL данные из приложения Android. Я довольно новый для концепции JSON синтаксического р...

0  Разница между установкой APK с ADB и Eclipse  ( Difference between installing an apk with adb and eclipse ) 
У меня есть приложение, которое закрывается после того, как он закончен. Если я устанавливаю его через Eclipse, он работает нормально, но если я устанавливаю ...

38  Android / iOS одноранговая архитектура [закрыто]  ( Android ios peer to peer architecture ) 
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»> закрыт . Этот вопрос должен быть больше Фокусированный . В настоя...

4  Провел жесты на Android в единстве  ( Swipe gestures on android in unity ) 
Я пытаюсь получить единство, чтобы узнать, что я провожу оставить вправо, я решил, что, но моя проблема заключается в том, что это не понимает этого, пока я н...

1  Проблема с использованием TextureView с NDK  ( Issue using textureview with ndk ) 
Я работаю над небольшим кусочком кода, используя текстуру, чтобы отобразить результат среды MediaPlayer. Я сталкиваюсь с проблемой, пытающимся смешивать упр...

0  Получить данные с удаленного сервера в Android  ( Get data from remote server in android ) 
Я использую Oracle DB и WEBLOGIC как веб-сервер. Из моего приложения для Android я могу отправлять параметры на мой удаленный сервер .. Моя проблема заключает...

2  Android Soundpool Heast Limits  ( Android soundpool heap limits ) 
Я использую Soundpool, чтобы загрузить несколько звуковых клипов и воспроизводить их обратно. Это правильно функционирует на 100% от того, что я могу сказат...

7  Мигающий фон  ( Flashing background ) 
У меня есть <код> LinearLayout с несколькими <код> Buttons и <код> TextViews . Я хочу, чтобы мой фон прошился на временных интервалах, скажем из красного до...

7  Как портировать родной C-код на Android  ( How to port native c code on android ) 
Кто-нибудь может сказать мне, как портировать нативную программу C на платформе Android ..умел ли я включить некоторые библиотеки C или как именно ...? Спас...

2  Как поставить один за один звонок на удержание? [закрыто]  ( How to put one by one call on hold ) 
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»> <Путь d = "M15 6.38A6.48 6.48 0 007.78. 04H-.02A6.49 6.49 0 002.05 ...

1  Android - Interstitialad - ресурсы сервисов Google Play не были найдены  ( Android interstitialad the google play services resources were not found ) 
Я пытаюсь добавить межстициализацию в мой проект. Я добавил необходимую библиотеку Скачать сервис Google от Manager SDK Импортировка проекта в качеств...

0  Разбирайте следующий XML с помощью модернизации SimplexML-конвертера с классом POJO  ( Parse the following xml using retrofit simplexml converter with a pojo class ) 
Это моя структура XML <код> <downloads> <item>98cfa929ee93149e245aabf5e4377058</item> <item>498b513aa646d6ef1c407cbeabf6bd20</item> <item>13815d2c0dd53a251b...

0  Bitmap.createbitmap имеет все пиксели на 0  ( Bitmap createbitmap has all pixels set to 0 ) 
Я пытаюсь создать растровое изображение из AN INT Array, но полученное растровое изображение все 0. <Сильный> Сценарий У меня есть приложение, которое прин...