Wie kann ich den TimerPicker verwenden?

  • 11 Antworten
  • Letztes Antwortdatum
N

nikobellic

Neues Mitglied
0
Ich möchte eine Grafische eingabe für Zeit erstellen (Wecker) und würde gerne den TimePicker verwenden weil er einfach besser aussieht als ein EditText.
Ich will die Werte vom TimePicker testweise in einem textView ausgeben.
ich habe mir einen TimePicker in der XML erstellt und in meiner onCreate auch

Code:
TimePicker tp = (TimePicker)findViewById(R.id.timePicker1);
Nun habe ich leider keine Ahnung was mit der TimePicker zurückgibt :sad:
Ich nehme mal an das sind 2 integer Werte wie kann ich diese zwischenspeichern und weiterverwenden ?
Ich hoffe ihr könnt mir helfen!

MfG Niko
 
damit kann ich momentan leider nicht viel anfangen weil noch ein frischling in android programmierung bin.
das was ich jetzt rausgelesen habe ist :
ich brauche die methoden hier richtig :
Code:
public Integer getCurrentHour()
    {
        
        return 0;
        
    }   
public Integer getCurrentMinute ()
    {
        
        return 0;
    }

in der beschreibung steht " Returns


  • The current hour in the range (0-23).

" & " Returns


  • The current minute.

"

aber in welche variable wird das dann gespeichert ?
 
Du erzeugst ne neue Klasse "TimePickerFragment". Da kommt dann dieser Code von dem Tut rein.

import java.util.Calendar;
import android.app.Dialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.text.format.DateFormat;
import android.widget.TimePicker;

public class TimePickerFragment extends DialogFragment
implements TimePickerDialog.OnTimeSetListener {

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);

return new TimePickerDialog(getActivity(), this, hour, minute,
DateFormat.is24HourFormat(getActivity()));
}

public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
((MainActivity) getActivity()).setDatum(hourOfDay, minute);
}
}

Dafür brauchste kein eigenes Layout weil es für TimePicker und DatePicker mitgeliefert wird.

Hier wird in der onCreate Methode die aktuelle Zeit geholt und der TimePicker gestartet der dann die geholte Zeit anzeigt.

Bei onTimeSet wird die ausgewählte Zeit übergeben. Ich übergebe das immer mit "((MainActivity) getActivity()).setDatum(hourOfDay, minute);"

MainActivity is die Activity wohin es übergeben wird. In dieser musste dann die Methode "public void setDatum(int hourOfDay, int minute) {}" erzeugen und dann kannste in dieser mit den Variablen hourOfDay und minute arbeiten.

Edit: Hab ich vergessen. Den Dialog rufste mit
DialogFragment newFragment = new TimePickerFragment();
newFragment.show(getSupportFragmentManager(), "timePicker");
auf.
 
Zuletzt bearbeitet:
Erstmal danke für die Antwort:)
Welches API level benutzt du ?
Ich bin bei API 11 leider kriege ich noch Fehlermeldungen die ich mir gerade nicht erklären kann.
Code:
((MainActivity) getActivity()).setDatum(hourOfDay, minute);
"Cannot cast from FragmentActivity to MainActivity"
Meine MainActivity kann nicht erben (der name ist schon richtig).

Und ich weis nicht wo das rein soll...
Tut mir leid ich bin noch ein Anfänger :(
Code:
DialogFragment newFragment = new TimePickerFragment();
    newFragment.show(getSupportFragmentManager(), "timePicker");
 
Wo ich diese Funktion benutzt hab war mein API Min Level 14. Bin mir grade nicht sicher ob es auch mit 11 funktioniert. Mit geringeren API´s hab ich mich noch nicht beschäftigt. Ich kämpfe noch mit genug anderen Problemen wie du ;)

Ich denke du hast mich Falsch verstanden. Hast du die Klasse TimePickerFragment in die Main Activity gepackt? Hört sich von der Fehlermeldung so an.

Du musst in dem Package wo deine MainActivity.java ist ne neue Klasse erstellen. Drück da mal rechte Maustaste,dann "New" und "Class". Dann geht ein Fenster auf. Da lässt du alles und gibts als Name "TimePickerFragment" ein.

Dann haste neben der MainActivity.java noch TimePickerFragment.java .

Im TimePickerFragment.java kommt dann der Code von oben und der Fehler sollte behoben sein.

Wegen
DialogFragment newFragment = new TimePickerFragment();
newFragment.show(getSupportFragmentManager(), "timePicker");

Das kannste einfach in eine onClick Methode in der MainActivity schreiben. Drückste dann den Button geht der TimePicker Dialog auf.
 
Hab kein Skype aber ich denke wir nähern uns deinem Problem.

Dir fehlt das Package über den imports. Haste beim kopieren bestimmt gelöscht. Guck mal in deine MainActivity. Da steht ganz oben package und dahinter wie du am anfang deine app genannt hast. z.B. package com.example.timepickertest;

So muss es im TimePickerFragment auch aussehen.

Kannste mal deine MainActivity zeigen?
 
Du hast das falsch verstanden. Du sollst kein package draus machen. Du solltest in deinen code vom timepickerfragment.java das package com.example.advancedalarm über den imports einfügen. In der MainActivity.java siehte es in der erste Zeile.

Links im "ordner" com.example.advancedalarm muss die mainactivity.java und timepickerfragment.java liegen. Da wo jetzt das timepickerfragment drin is muss wieder weg.



Gesendet von meinem Nexus 4 mit Tapatalk 2
 
Das mit dem package über imports einfügen werde ich irgendwie rauskriegen..

Ich möchte aber erstmal meine MainActivity wieder lauffähig machen aber ich weis nicht wie momentan siehts so aus :

http://www7.pic-upload.de/26.02.13/m2q8v6beuk7r.jpg

und ohne die richtige package kann ich ja nichts machen.
 
Ich bin mir nicht sicher aber dein Package hat hinten ein .R und das gehört da nicht hin. Drück mal auf dem Package im PackageExplorer die rechte Maustaste und dann refactor -> rename. Dann das .R hinten löschen und hoffen das es wieder geht.

Generell hätte es so aussehen müssen.

Anhang anzeigen Neue Bitmap.bmp
 
Zurück
Oben Unten