Setzen TextView zu Zeit von TimePicker - Android
Ich habe mit diesem tutorial hier zum erstellen eines Zeit-picker. Ich kann wählen Sie die Zeit in Ordnung, aber ich kann nicht die ausgewählte Zeit zu zeigen, bis in meinem TextView. Java ist nicht meine bevorzugte Sprache, so das ist wahrscheinlich, wo ich bin fallen.
Hier ist mein java-code:
import android.app.Activity;
import android.app.Dialog;
import android.app.DialogFragment;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
import android.widget.TimePicker;
import java.util.Calendar;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//code from: http://developer.android.com/guide/topics/ui/controls/pickers.html
public void showTimePicker(View v) {
DialogFragment newFragment = new TimePickerFragment();
newFragment.show(getFragmentManager(), "timePicker");
}
public static class TimePickerFragment extends DialogFragment
implements TimePickerDialog.OnTimeSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
//Use the current time as the default values for the picker
final Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
//Create a new instance of TimePickerDialog and return it
return new TimePickerDialog(getActivity(), this, hour, minute,
DateFormat.is24HourFormat(getActivity()));
}
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
//Do something with the time chosen by the user - how!?
}
}
}
In meiner XML habe ich den " Zeit-button führen Sie den showTimePicker Methode auf auf wie so:
android:onClick="showTimePicker"
Habe ich versucht nur die Einstellung für das Textfeld innerhalb der onTimeSet Methode, aber ich bekomme eine nullpointerexception. Dann dachte ich, ich sollte Sie initialisieren es in onCreateDialog aber da weiß ich nicht, wie zu verwenden findViewById zu finden, der eigentliche text anzeigen. Ich bin sicher, dies ist wahrscheinlich einfach, aber ich habe gesucht hoch und runter ohne viel Glück. Vielen Dank für Ihre Hilfe!
Du musst angemeldet sein, um einen Kommentar abzugeben.
kann man das so machen, dass:
1) Lösung 1 (besser):
2) Lösung 2:
findViewById()
inonCreate()
. Dann erhalten Sie die Vorteile von modularer code und der performance-Schub!It is strongly recommended that subclasses do not have other constructors with parameters, since these constructors will not be called when the fragment is re-instantiated
. Dies bedeutet beispielsweise, dass die app zum Absturz mit NullPointerException, wenn der Bildschirm-Orientierung geändert wird, während der dialog angezeigt wird (mResultText
null sein).Können Sie tatsächlich nutzen
findViewById
, als mitgetActivity()
Ihr fragment erhält Zugriff auf die Aktivität ausgeführt wird und somit der Blick in die Aktivität.Diese einfache Lösung sollte bevorzugt werden vor der übergabe einer Referenz auf die
TextView
um das fragment, wie dieser Bezug verloren auf reinstantiation des fragments (siehe Kommentar).