2017-07-01 2 views
0

Hier ist der Java-Code:Wie kann Android TimePicker die ausgewählte Zeit anzeigen?

public class ReservationFragment extends DialogFragment implements AdapterView.OnItemSelectedListener, View.OnClickListener { 

private ReservationFragment.OnFragmentInteractionListener mListener; 

private EditText fromDateEtxt; 
private EditText fromTimeEtxt; 


private DatePickerDialog fromDatePickerDialog; 
private TimePickerDialog fromTimePickerDialog; 

private SimpleDateFormat dateFormatter; 
private SimpleDateFormat timeFormatter; 

public ReservationFragment() { 

} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    View v = inflater.inflate(R.layout.fragment_reservation, container, false); 

    /** Date & Time Picker **/ 

    dateFormatter = new SimpleDateFormat("dd.MM.yyyy", Locale.US); 
    fromDateEtxt = (EditText) v.findViewById(R.id.reservation_etxt6); 
    fromDateEtxt.setInputType(InputType.TYPE_NULL); 
    fromDateEtxt.requestFocus(); 

    timeFormatter = new SimpleDateFormat("hh:mm", Locale.US); 
    fromTimeEtxt = (EditText) v.findViewById(R.id.reservation_etxt7); 
    fromTimeEtxt.setInputType(InputType.TYPE_NULL); 
    fromTimeEtxt.requestFocus(); 

    setDateField(); 
    setTimeField(); 

    return v; 
} 

private void setDateField() { 

    fromDateEtxt.setOnClickListener(this); 

    java.util.Calendar newCalendar = java.util.Calendar.getInstance(); 

    fromDatePickerDialog = new DatePickerDialog(getActivity(), R.style.DialogTheme, new DatePickerDialog.OnDateSetListener() { 

     public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
      java.util.Calendar newDate = java.util.Calendar.getInstance(); 
      newDate.set(year, monthOfYear, dayOfMonth); 
      fromDateEtxt.setText(dateFormatter.format(newDate.getTime())); 

      Toast.makeText(getActivity(), "You choose: " + dayOfMonth + "." + (monthOfYear + 1) + "." + year, Toast.LENGTH_LONG).show(); 
     } 

    },newCalendar.get(Calendar.YEAR), newCalendar.get(java.util.Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH)); 
} 

private void setTimeField(){ 

    fromTimeEtxt.setOnClickListener(this); 

    java.util.Calendar newCalendar = java.util.Calendar.getInstance(); 

    fromTimePickerDialog = new TimePickerDialog(getActivity(), R.style.DialogTheme, new TimePickerDialog.OnTimeSetListener(){ 

     public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
      java.util.Calendar newTime = java.util.Calendar.getInstance(); 
      newTime.set(hourOfDay, minute); 
      fromTimeEtxt.setText(timeFormatter.format(newTime.getTime())); 

      Toast.makeText(getActivity(), "You choose: " + hourOfDay + ":" + minute, Toast.LENGTH_LONG).show(); 
     } 

    },newCalendar.get(java.util.Calendar.HOUR_OF_DAY), newCalendar.get(java.util.Calendar.MINUTE), false); 

} 

@Override 
public void onClick(View v) { 
    if(v == fromDateEtxt) { 
     fromDatePickerDialog.show(); 
    } 
    else if(v == fromTimeEtxt) { 
     fromTimePickerDialog.show(); 
    } 
} 

Bitte, mir helfen. Alles funktioniert gut, aber ich möchte nur die ausgewählte Zeit in EditText NOT CURRENT TIME eingeben.

Allerdings muss ich sagen, dass mein Toast funktioniert gut, es zeigt ausgewählte Zeit, aber EditText nicht.

Antwort

0

Sie geben die falschen Werte an Calendar.set(int, int). Werfen Sie einen Blick auf the documentation.

Es sollte wie folgt sein:

java.util.Calendar newTime = java.util.Calendar.getInstance(); 
newTime.set(Calendar.HOUR_OF_DAY, hourOfDay); 
newTime.set(Calendar.MINUTE, minute); 
fromTimeEtxt.setText(timeFormatter.format(newTime.getTime()) 
+0

sehr Vielen Dank! Du hast meinen Tag gerettet :))) – Amila

+0

Gern geschehen :) –

Verwandte Themen