2016-03-28 3 views
0

Я очень новичок в Android и изучаю на данный момент.Android TimePicker не вернет данные

Я пытаюсь реализовать TimePicker. Все работает отлично до того момента, когда пользователю нужно выбрать время, а затем определенное время не обновляется.

Что я делаю неправильно? rest of my code можно найти на GitHub.

public class TimePickerFragment extends DialogFragment { 
    private static final String ARG_TIME = "date"; 
    public static final String EXTRA_TIME = "time"; 
    private TimePicker mTimePicker; 

    public static TimePickerFragment newInstance(Date date) { 

    Bundle args = new Bundle(); 
    args.putSerializable(ARG_TIME, date); 

    TimePickerFragment fragment = new TimePickerFragment(); 
    fragment.setArguments(args); 
    return fragment; 
    } 


    public Dialog onCreateDialog(Bundle savedInstanceState) { 

    View v = LayoutInflater.from(getActivity()).inflate(R.layout.picker_time_fragment, null); 
    final Date time = (Date) getArguments().getSerializable(ARG_TIME); 

    Calendar a = Calendar.getInstance(); 
    final int hour = a.get(Calendar.HOUR_OF_DAY); 
    final int minute = a.get(Calendar.MINUTE); 
    mTimePicker = (TimePicker) v.findViewById(R.id.time_picker_layout); 


    return new AlertDialog.Builder(getActivity()) 
     .setView(v) 
     .setTitle(R.string.time_picker_crime_title) 
     .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
       mTimePicker.setHour(hour); 
       mTimePicker.setMinute(minute); 
      } 

      sendResultTime(Activity.RESULT_OK, time); 
      } 
     }) 
     .show(); 
    } 

    private void sendResultTime(int resultCode, Date time) { 
    if (getTargetFragment() == null) { 
     return; 
    } 
    Intent intent = new Intent(); 
    intent.putExtra(EXTRA_TIME, time); 

    getTargetFragment().onActivityResult(getTargetRequestCode(), resultCode, intent); 
    } 

} 
+0

Почему вы используете условие проверки версии sdk, равное или выше зефира? –

+0

В противном случае говорит, что для вызова требуется уровень API 23 (текущий минимум равен 16). И я не могу использовать .setCurrentHour. Что мне делать? – Stefanm89

+0

Он работает в устройствах из зефира? –

ответ

0
String deli_time = shared_preference.getString("delivery_time", ""); 
List<String> timeList1 = Arrays.asList(deli_time.split(" ")); 
String time_value = timeList1.get(1).trim()+" "+timeList1.get(2).trim(); 
Date dateObj = sdf2.parse(time_value); 
time_value = sdf1.format(dateObj); 
Date dateObj1 = sdf3.parse(timeList1.get(0)); 
dayOfTheWeek = sdf.format(dateObj1); 
String time = ""; 
time = ZainbowDatabase.getInstance(MyBasket.this).getTimeForDay(mall_id, t1_vendor_id, dayOfTheWeek, 2); 

if(time.length() > 0 && !time.equalsIgnoreCase("")){ 
    String time1, time2 = ""; 
    if(time.contains(",")){ 
     List<String> timeList = Arrays.asList(time.split(",")); 
     time1 = timeList.get(0); 
     time2 = timeList.get(1); 
    }else 
     time1 = time; 

    boolean check_time = AppConstant.checkTime(time1, time2, time_value); 

Сопоставим этот код для timePicker. Это может помочь. Игнорировать строку Zainbow DB. Это просто проверка времени для определенного объекта. Нет необходимости в этом.

0

Попробуйте использовать

mTimePicker.setCurrentHour(hour); mTimePicker.setCurrentMinute(minute);

Вместо этого:

mTimePicker.setHour(hour); mTimePicker.setMinute(minute);

и удалить это условие SDk ...

+0

Спасибо за быстрый ответ, но когда я использую mTimePicker.setCurrentHour (час), он говорит, что он устарел и все еще не работает. – Stefanm89

0

Почему бы вам не использовать TimePickerDialog? Я уверен, что вы просто хотите, чтобы пользователь правильно выбрал время суток? Вот что вам нужно:

TimePickerDialog timePicker = new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() { 
       @Override 
       public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
       //User selected something   
       } 
     }, 9, 11, true); 
timePicker.show(); 
Смежные вопросы