2016-03-29 4 views
0

Ich arbeite an einem Modul, wo ich dem Benutzer erlauben soll, 3 verschiedene Zeiten in verschiedenen Textansichten zu setzen, für die ich TimePicker verwende.TimePicker zeigt die gleiche Zeit in jedem TextView

Aber immer wenn ich Zeit in TimePicker wähle, zeigt es dieselbe Zeit in anderen zwei TextViews an.

Also was könnte der Grund sein?

private String textViewTime1, textViewTime2, textViewTime3; 
private String mTime1, mTime2, mTime3; 

// On clicking Time picker 
    public void setTime(View v){ 
     Calendar now = Calendar.getInstance(); 
     TimePickerDialog tpd = TimePickerDialog.newInstance(
       this, 
       now.get(Calendar.HOUR_OF_DAY), 
       now.get(Calendar.MINUTE), 
       false 
     ); 
     tpd.setThemeDark(false); 
     tpd.show(getFragmentManager(), "Timepickerdialog"); 
    } 

// Obtain time from time picker 
    @Override 
    public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute) { 
     mHour = hourOfDay; 
     mMinute = minute; 
     if (minute < 10) { 
      mTime1 = hourOfDay + ":" + "0" + minute; 
      mTime2 = hourOfDay + ":" + "0" + minute; 
      mTime3 = hourOfDay + ":" + "0" + minute; 
     } else { 
      mTime1 = hourOfDay + ":" + minute; 
      mTime2 = hourOfDay + ":" + minute; 
      mTime3 = hourOfDay + ":" + minute; 
     } 
     textViewTime1.setText(mTime1); 
     textViewTime2.setText(mTime2); 
     textViewTime3.setText(mTime3); 
    } 
+3

'mTime1'' mTime2' und 'mTime3' sehen für mich genau gleich aus. Fehle ich etwas? – Blackbelt

+1

@Blackbelt lol, weil sie gleich sind – HendraWD

+0

Sie müssen Ihre Textansicht übergeben, wenn Sie Zeit und Zeit in der Textansicht, die Sie übergeben haben, setzen, hier setzen Sie Zeit in allen drei Textansicht unabhängig davon, für welche Sie festlegen müssen. –

Antwort

0

Aber wenn ich wählen Zeit in Timepicker es gleichzeitig in anderen zwei Textviews zeigt.

Da, Sie setzen sie die gleiche Zeit!

@Override 
    public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute) { 
     mHour = hourOfDay; 
     mMinute = minute; 
     if (minute < 10) { 
      /// Time set to mTime1 
      mTime1 = hourOfDay + ":" + "0" + minute; 
      /// Time set to mTime2 same 
      mTime2 = hourOfDay + ":" + "0" + minute; 
      /// Time set to mTime3 same 
      mTime3 = hourOfDay + ":" + "0" + minute; 
     } else { 
      /// Time set to mTime1 
      mTime1 = hourOfDay + ":" + minute; 
      /// Time set to mTime2 same 
      mTime2 = hourOfDay + ":" + minute; 
      /// Time set to mTime3 same 
      mTime3 = hourOfDay + ":" + minute; 
     } 
     textViewTime1.setText(mTime1); 
     textViewTime2.setText(mTime2); 
     textViewTime3.setText(mTime3); 
    } 
+0

Ok ich habe es. Kann ich eine Lösung haben? – Sun

+0

Es kommt darauf an, was willst du erreichen? Haben Sie 3 separate Tasten um den 'TimePickerDialog' zu öffnen? –

+0

Ja, ich verwende drei verschiedene - 2 Textansichten, um drei verschiedene Zeiten zu setzen ... Ich benutze folgenden Code: https://github.com/blanyal/Remindly/blob/master/app/src/main/java/ com/blanyal/remindme/ReminderAddActivity.java – Sun

0

// Erhalten Zeit von Zeitauswahl

@Override 
    public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute) { 
     mHour = hourOfDay; 
     mMinute = minute; 

Denn jedes Mal, wenn Sie alle drei Mal in einem Verfahren festgelegt und in der Textansicht einstellen. Überprüfen Sie es sorgfältig und Code erneut.

if (minute < 10) { 
      mTime1 = hourOfDay + ":" + "0" + minute; 
      mTime2 = hourOfDay + ":" + "0" + minute; 
      mTime3 = hourOfDay + ":" + "0" + minute; 
     } else { 
      mTime1 = hourOfDay + ":" + minute; 
      mTime2 = hourOfDay + ":" + minute; 
      mTime3 = hourOfDay + ":" + minute; 
     } 
     textViewTime1.setText(mTime1); 
     textViewTime2.setText(mTime2); 
     textViewTime3.setText(mTime3); 
    } 
2

Vermutlich haben Sie verpasst, wer mit dem Callback angesprochen werden sollte, damit Sie alle Textansichten überschreiben. Sie sollten etwas Ähnliches verwenden:

if(view belongs to textViewTime1) 
    textViewTime1.setText(mTime1); 
if(view belongs to textViewTime2) 
    textViewTime2.setText(mTime2); 
if(view belongs to textViewTime3) 
    textViewTime3.setText(mTime3); 

Ohne die Informationen, was view tatsächlich ist und wie es verdrahtet ist, kann ich Ihnen nicht mit, dass, wenn die Bedingung helfen.

Ich habe eine schnelle Überprüfung der ReminderAddActivity und TimePickerDialog, Sie müssen TimePickerDialog auf jede unabhängige Textansicht anwenden. Am Ende benutze diese Kontrolle mehrmals, anstatt sie zusammen zu hacken. Es funktioniert nicht auf diese Weise, ohne die von Ihnen verwendete Bibliothek neu zu schreiben.

+0

Ich habe vergessen, deine Antwort als nützlich zu tippen, also tippte ich einfach :) – Sun

Verwandte Themen