Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 21 янв 2017, 04:14

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 64 ]  На страницу 1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: Урок 59. Диалоги. DatePickerDialog
СообщениеДобавлено: 23 фев 2012, 04:00 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 12:32
Сообщений: 1317
Благодарил (а): 0 раз.
Поблагодарили: 67 раз.
В этом уроке:

- используем DatePickerDialog

Click here to read this article!

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Последний раз редактировалось damager82 23 июн 2016, 22:18, всего редактировалось 3 раз(а).

Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 59. Диалоги. DatePickerDialog
СообщениеДобавлено: 08 ноя 2012, 23:23 
Аватар пользователя

Зарегистрирован: 20 окт 2012, 13:01
Сообщений: 4201
Благодарил (а): 68 раз.
Поблагодарили: 467 раз.
У меня нет андроида, я запускаю все по уроку на эмуляторе. Так вот сам диалог выбора даты просто ужасен! у меня нет таких кнопочек с + и -, а просто бегунок со стрелочками вверх и вниз. не представляю, чтоб его можно было использовать. На экране, допустим, вертикакльно три числа - 01 02 03. 02- значит текущее, я хочу допустим поставить первое число. Если я щелкаю по 01 то дата становится наоборот - 03! т.е. этот бегунок крутится в другую сторону.. просто катастрофа. Да еще и все на английском..
интересно, на реальных устройствах тоже так же? ох, надо свой писать :(

_________________
R.id.team

NullPointerException - что делать???
http://forum.startandroid.ru/viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
http://forum.startandroid.ru/viewtopic.php?f=60&t=3198


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 59. Диалоги. DatePickerDialog
СообщениеДобавлено: 09 ноя 2012, 00:55 
Аватар пользователя

Зарегистрирован: 26 июл 2012, 11:42
Сообщений: 712
Благодарил (а): 6 раз.
Поблагодарили: 18 раз.
Olivka
Приобретите бюджетное устройство и тестируйте все на нем, намного проще жизнь становится.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 59. Диалоги. DatePickerDialog
СообщениеДобавлено: 09 ноя 2012, 01:29 
Аватар пользователя

Зарегистрирован: 20 окт 2012, 13:01
Сообщений: 4201
Благодарил (а): 68 раз.
Поблагодарили: 467 раз.
Пока не заработала :)

_________________
R.id.team

NullPointerException - что делать???
http://forum.startandroid.ru/viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
http://forum.startandroid.ru/viewtopic.php?f=60&t=3198


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 59. Диалоги. DatePickerDialog
СообщениеДобавлено: 08 янв 2013, 16:25 

Зарегистрирован: 22 ноя 2012, 00:12
Сообщений: 12
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Добрый. У меня при выводе даты номер месяца на единицу меньше (январь - 0 итд) Это так и должно быть? Я конечно прописал Month + 1, но хотелось бы знать.
И еще вопрос не по теме. Приложения для 2.3.3 будут работать на 4.1? (где то в форуме это мелькало, но найти я не могу)
Заранее спасибо.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 59. Диалоги. DatePickerDialog
СообщениеДобавлено: 08 янв 2013, 19:58 
Аватар пользователя

Зарегистрирован: 26 июн 2012, 14:22
Сообщений: 3422
Откуда: UA
Благодарил (а): 11 раз.
Поблагодарили: 244 раз.
Цитата:
Добрый. У меня при выводе даты номер месяца на единицу меньше (январь - 0 итд) Это так и должно быть? Я конечно прописал Month + 1, но хотелось бы знать.

это есть такой косяк, сам на него не давно попался, хоть и потратил пол часа но всё же не приятно =) но да, так и должно быть
Цитата:
И еще вопрос не по теме. Приложения для 2.3.3 будут работать на 4.1?

это смотря что, 99.9% работает, но есть "фишечки" которые нет, здесь как говорится нужен и опыт и знание новшеств и архитектуры версий.

_________________
R.id.team
Политика на форуме запрещена


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 59. Диалоги. DatePickerDialog
СообщениеДобавлено: 24 июн 2013, 14:14 

Зарегистрирован: 29 апр 2013, 12:53
Сообщений: 56
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Здравствуйте. Скажите, почему DateDialogPicker так сильно глючит на андроид 4.1?
При нажатии готово обработчик срабатывает 2 раза. Если ткнуть мимо диалога, он закроется, и при этом тоже срабатывает обработчик. Из-за чего это? Как это вылечить?
Повторное срабатывание временно вылечил с помощью подсчёта срабатываний и обнуления количества при создании диалога. Но что делать с отменой диалога?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 59. Диалоги. DatePickerDialog
СообщениеДобавлено: 24 июн 2013, 14:56 
Аватар пользователя

Зарегистрирован: 20 окт 2012, 13:01
Сообщений: 4201
Благодарил (а): 68 раз.
Поблагодарили: 467 раз.
С отменой не сложно, достаточно выставить флажок http://developer.android.com/reference/ ... de(boolean) и он перестанет реагировать на нажатия снаружи.
Так же нужно не забывать обрабатывать и кнопку Cancel, и закрытие диалога по кнопке "назад" (например, в диаложеках набора пароля).

Про двойное срабатывание не знаю, возможно просто в логике где-то ошибка.

_________________
R.id.team

NullPointerException - что делать???
http://forum.startandroid.ru/viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
http://forum.startandroid.ru/viewtopic.php?f=60&t=3198


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 59. Диалоги. DatePickerDialog
СообщениеДобавлено: 24 июн 2013, 15:27 

Зарегистрирован: 29 апр 2013, 12:53
Сообщений: 56
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Или я чего-то не понимаю, или не работает.
Относительно урока сделал так:
В onCreateDialog
перед выводом диалога:
tpd.getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,
WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
Но ничего не изменилось. Окошко закрывается, обработчик срабатывает.

На счёт Cancel, назад тоже не понял. В этом диалоге же предусмотрена своя одна кнопка(в андроид 4) "Готово" и setPositiveButton, setNegativeButton тут не работают.

Про двойное срабатывание. проблема не в логике, а в самом диалоге. На 2.1 срабатывает 1 раз.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 59. Диалоги. DatePickerDialog
СообщениеДобавлено: 24 июн 2013, 15:37 
Аватар пользователя

Зарегистрирован: 20 окт 2012, 13:01
Сообщений: 4201
Благодарил (а): 68 раз.
Поблагодарили: 467 раз.
Да, ты прав, наверное к DatePicker-у это не применимо..

_________________
R.id.team

NullPointerException - что делать???
http://forum.startandroid.ru/viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
http://forum.startandroid.ru/viewtopic.php?f=60&t=3198


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 59. Диалоги. DatePickerDialog
СообщениеДобавлено: 14 авг 2013, 16:25 

Зарегистрирован: 14 авг 2013, 16:11
Сообщений: 2
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Здравствуйте!
Во-первых, спасибо за основательный подход. Собственно, вопрос:
Можно ли выводить текущую дату? (Кстати, неплохо было бы это и в самом уроке прописать)


Последний раз редактировалось ebtehun 14 авг 2013, 17:10, всего редактировалось 1 раз.

Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 59. Диалоги. DatePickerDialog
СообщениеДобавлено: 14 авг 2013, 16:53 
Аватар пользователя

Зарегистрирован: 09 янв 2012, 15:45
Сообщений: 2383
Откуда: Самара
Благодарил (а): 102 раз.
Поблагодарили: 320 раз.
Создание диалогов
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1.     protected Dialog onCreateDialog(int id) {
  2.         if (id == DIALOG_DATE) {
  3.                 DatePickerDialog tpd = new DatePickerDialog(this, myCallBackDate, year, monthOfYear, dayOfMonth);
  4.                 return tpd;
  5.         }
  6.         if (id == DIALOG_TIME) {
  7.             TimePickerDialog tpd = new TimePickerDialog(this, myCallBackTime, hourOfDay, minute, true);
  8.             return tpd;
  9.           }        
  10.         return super.onCreateDialog(id);
  11.       }
  12.  

Из вызов
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. showDialog(DIALOG_TIME);
  2. showDialog(DIALOG_DATE);
  3.  

Глобальные переменные класса
Код: [ Загрузить ] [ Скрыть ]
Using Java(TM) 2 Platform Standard Edition 5.0 Syntax Highlighting
  1.     private int year = 2013;
  2.     private int monthOfYear = 01;
  3.     private int dayOfMonth = 01;
  4.     private int hourOfDay = 12;
  5.     private int minute = 00;
  6.     private int DIALOG_DATE = 1;
  7.     private int DIALOG_TIME = 2;
  8.     private Calendar cal;
  9.     private long selectedTime;
  10.  

Изменение глобальных переменных
Код: [ Загрузить ] [ Скрыть ]
Using Java(TM) 2 Platform Standard Edition 5.0 Syntax Highlighting
  1.         public void setCurrentData() {
  2.                 long currentTime = System.currentTimeMillis();
  3.                 Date date = new Date(currentTime);
  4.                 cal = Calendar.getInstance();
  5.                 cal.setTimeInMillis(totalTime);
  6.  
  7.                 this.year        = cal.get(Calendar.YEAR);
  8.                 this.monthOfYear = cal.get(Calendar.MONTH);
  9.                 this.dayOfMonth  = cal.get(Calendar.DAY_OF_MONTH);
  10.                 this.hourOfDay   = cal.get(Calendar.HOUR_OF_DAY);
  11.                 this.minute      = cal.get(Calendar.MINUTE);
  12.         }
  13.  

Ну и сами слушатели
Код: [ Загрузить ] [ Скрыть ]
Using Java(TM) 2 Platform Standard Edition 5.0 Syntax Highlighting
  1.     OnDateSetListener myCallBackDate = new OnDateSetListener() {
  2.  
  3.  
  4.         public void onDateSet(DatePicker view, int year, int monthOfYear,
  5.           int dayOfMonth) {
  6.         this.year = year;
  7.         this.monthOfYear = monthOfYear;
  8.         this.dayOfMonth = dayOfMonth;
  9.      
  10.         cal = Calendar.getInstance();
  11.         cal.set(Calendar.MINUTE, this.minute);
  12.         cal.set(Calendar.HOUR_OF_DAY, this.hourOfDay);        
  13.         cal.set(Calendar.DAY_OF_MONTH, this.dayOfMonth);
  14.         cal.set(Calendar.MONTH, this.monthOfYear);
  15.         cal.set(Calendar.YEAR, this.year);
  16.        
  17.         selectedTime = cal.getTimeInMillis();
  18.       }
  19.     };
  20.        
  21.     OnTimeSetListener myCallBackTime = new OnTimeSetListener() {
  22.         public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
  23.           this.hourOfDay = hourOfDay;
  24.           this.minute = minute;
  25.          
  26.           cal = Calendar.getInstance();
  27.           cal.set(Calendar.MINUTE, this.minute);
  28.           cal.set(Calendar.HOUR_OF_DAY, this.hourOfDay);
  29.           cal.set(Calendar.DAY_OF_MONTH, this.dayOfMonth);
  30.           cal.set(Calendar.MONTH, this.monthOfYear);
  31.           cal.set(Calendar.YEAR, this.year);
  32.          
  33.           selectedTime = cal.getTimeInMillis();
  34.         }
  35.     };
  36.  

код вырезками, но думаю разберетесь тут.

_________________
Изображение

А тот ли ты путь выбрал, разработчик?
Хочешь знать ошибки ответ? Загляни в logcat!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 59. Диалоги. DatePickerDialog
СообщениеДобавлено: 14 авг 2013, 21:39 

Зарегистрирован: 14 авг 2013, 16:11
Сообщений: 2
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Я заметил, что текущую дату можно сразу объявить в переменных, это ведь не ошибка :?:
Код: [ Загрузить ] [ Скрыть ]
  1. private Calendar cal = Calendar.getInstance();     
  2.     int myYear = cal.get(Calendar.YEAR); 
  3.     int myMonth = cal.get(Calendar.MONTH); 
  4.     int myDay = cal.get(Calendar.DAY_OF_MONTH); 


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 59. Диалоги. DatePickerDialog
СообщениеДобавлено: 15 авг 2013, 11:04 
Аватар пользователя

Зарегистрирован: 09 янв 2012, 15:45
Сообщений: 2383
Откуда: Самара
Благодарил (а): 102 раз.
Поблагодарили: 320 раз.
Нет, не ошибка.

_________________
Изображение

А тот ли ты путь выбрал, разработчик?
Хочешь знать ошибки ответ? Загляни в logcat!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 59. Диалоги. DatePickerDialog
СообщениеДобавлено: 15 сен 2013, 19:58 

Зарегистрирован: 15 сен 2013, 03:38
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Код: [ Загрузить ] [ Скрыть ]
  1. showDialog(DIALOG_DATE); 


Цитата:
ShowDialog(int)' is deprecated less... (Ctrl+F1)
This inspection reports where deprecated code is used in the specified inspection scope.


уже устарел, как обойтись без него?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 59. Диалоги. DatePickerDialog
СообщениеДобавлено: 15 сен 2013, 20:24 

Зарегистрирован: 27 авг 2013, 14:02
Сообщений: 28
Благодарил (а): 4 раз.
Поблагодарили: 1 раз.
axtrace писал(а):
Код: [ Загрузить ] [ Скрыть ]
  1. showDialog(DIALOG_DATE); 


Цитата:
ShowDialog(int)' is deprecated less... (Ctrl+F1)
This inspection reports where deprecated code is used in the specified inspection scope.


уже устарел, как обойтись без него?

DialogFragment или FragmentManager, но учитывая то, что выше упомянутые классы доступны только в апи 13+, то продолжай использовать и дальше ShowDialog, ну или саппорт либу.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 59. Диалоги. DatePickerDialog
СообщениеДобавлено: 23 окт 2013, 15:33 
Аватар пользователя

Зарегистрирован: 03 сен 2013, 10:39
Сообщений: 145
Откуда: Германия
Благодарил (а): 18 раз.
Поблагодарили: 1 раз.
Почему так не работает?
Код: [ Загрузить ] [ Скрыть ]
  1.   public void onclick(View view) { 
  2.     Date Current_Date = Calendar.getInstance().getTime(); 
  3.     myYear = Current_Date.getYear(); 
  4.     myMonth = Current_Date.getMonth(); 
  5.     myDay = Current_Date.getDay(); 
  6.     showDialog(DIALOG_DATE); 
  7.   } 

Хотел текущую дату выставить по умолчанию


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 59. Диалоги. DatePickerDialog
СообщениеДобавлено: 24 окт 2013, 01:22 
Аватар пользователя

Зарегистрирован: 28 сен 2013, 18:34
Сообщений: 450
Благодарил (а): 8 раз.
Поблагодарили: 110 раз.
Цитата:
Isaev Хотел текущую дату выставить по умолчанию.

Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. import java.util.Calendar;
  2.  
  3. import android.app.Activity;
  4. import android.app.DatePickerDialog;
  5. import android.os.Bundle;
  6. import android.view.View;
  7. import android.widget.Button;
  8. import android.widget.DatePicker;
  9. import android.widget.TextView;
  10.  
  11. public class MainActivity extends Activity {
  12.   private TextView mDateDisplay;
  13.   private Button mPickDate;
  14.   private int mYear;
  15.   private int mMonth;
  16.   private int mDay;
  17.   private DatePickerDialog mDatePickerDialog;
  18.  
  19.   @Override
  20.   public void onCreate(Bundle savedInstanceState) {
  21.     super.onCreate(savedInstanceState);
  22.     setContentView(R.layout.main);
  23.  
  24.     // get the current date
  25.     final Calendar c = Calendar.getInstance();
  26.     mYear = c.get(Calendar.YEAR);
  27.     mMonth = c.get(Calendar.MONTH);
  28.     mDay = c.get(Calendar.DAY_OF_MONTH);
  29.  
  30.     // get references of views
  31.     mDateDisplay = (TextView) findViewById(R.id.dateDisplay);  // в файле main.xml должен быть dateDisplay (TextView)
  32.     mPickDate = (Button) findViewById(R.id.pickDate);    // в файле main.xml должен быть pickDate (Button)
  33.  
  34.     // add a click listener to the button
  35.     mPickDate.setOnClickListener(new View.OnClickListener() {
  36.       public void onClick(View v) {
  37.         mDatePickerDialog = new DatePickerDialog(v.getContext(),
  38.                          mDateSetListener, mYear, mMonth, mDay);
  39.         mDatePickerDialog.setCancelable(true);
  40.         mDatePickerDialog.setTitle("Pick a date");
  41.         mDatePickerDialog.show();
  42.         //showDialog(DATE_DIALOG_ID);
  43.       }
  44.     });
  45.     // display the current date in the TextView
  46.    
  47.     updateDisplay();
  48.   }
  49.  
  50.   // update the date in the TextView
  51.   private void updateDisplay() {
  52.     mDateDisplay.setText(new StringBuilder()
  53.              .append(mMonth + 1).append("-")
  54.              .append(mDay).append("-")
  55.              .append(mYear).append(" "));
  56.   }
  57.  
  58.   // define a variable mDataSetListener
  59.   private DatePickerDialog.OnDateSetListener mDateSetListener =
  60.     new DatePickerDialog.OnDateSetListener() {
  61.       public void onDateSet(DatePicker view, int year,
  62.                             int monthOfYear, int dayOfMonth) {
  63.         mYear = year;
  64.         mMonth = monthOfYear;
  65.         mDay = dayOfMonth;
  66.         updateDisplay();
  67.      }
  68.    };
  69. }
  70.  

_________________
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 59. Диалоги. DatePickerDialog
СообщениеДобавлено: 25 окт 2013, 12:17 
Аватар пользователя

Зарегистрирован: 03 сен 2013, 10:39
Сообщений: 145
Откуда: Германия
Благодарил (а): 18 раз.
Поблагодарили: 1 раз.
trew, правильнее наверное на этапе присвоения корректировать
mMonth = monthOfYear+1;
а вообще интересный баг, надо было его описать в уроке


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 59. Диалоги. DatePickerDialog
СообщениеДобавлено: 25 окт 2013, 12:56 
Аватар пользователя

Зарегистрирован: 09 янв 2012, 15:45
Сообщений: 2383
Откуда: Самара
Благодарил (а): 102 раз.
Поблагодарили: 320 раз.
Это не баг, это фича, которая есть в документации.

_________________
Изображение

А тот ли ты путь выбрал, разработчик?
Хочешь знать ошибки ответ? Загляни в logcat!


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 64 ]  На страницу 1, 2, 3, 4  След.

Часовой пояс: UTC + 4 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB