Android text spinner mit Datumsauswahl
Ich bin neu auf android-word.
Ich arbeite gerade an einem text-anzeigen-spinner mit Zeit und Datum-picker.
- Wie set aktuelle Uhrzeit und Datum in der text-Ansicht standardmäßig.
- Nach wählen Sie Uhrzeit/Datum und klicken Sie auf "set" - Taste, warum meine Zeit/Datum-Auswahl ist leer
hier ist meine activity_main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:orientation="vertical" >
<TextView
android:id="@+id/startTime"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
style="@android:style/Widget.Holo.Spinner"
android:onClick="showTimePickerDialog"/>
<TextView
android:id="@+id/endTime"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
style="@android:style/Widget.Holo.Spinner"
android:onClick="showTimePickerDialog"/>
<TextView
android:id="@+id/date"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
style="@android:style/Widget.Holo.Spinner"
android:onClick="showDatePickerDialog"/>
hier ist meine MainActivity.java
import java.util.Calendar;
import android.os.Bundle;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.app.TimePickerDialog;
import android.text.format.DateFormat;
import android.view.Menu;
import android.view.View;
import android.widget.DatePicker;
import android.widget.TimePicker;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
public void showTimePickerDialog(View v) {
DialogFragment newFragment = new TimePickerFragment();
newFragment.show(getFragmentManager(), "timePicker");
}
public void showDatePickerDialog(View v) {
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getFragmentManager(), "datePicker");
}
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
}
}
public static class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
//Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
//Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), this, year, month, day);
}
public void onDateSet(DatePicker view, int year, int month, int day) {
//Do something with the date chosen by the user
}
}
}
Danke.
Ich habe Folgen Android-Picker tutorial developer.android.com/guide/topics/ui/controls/pickers.html
InformationsquelleAutor user1661740 | 2012-11-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem, das ich sehe, ist, dass Ihre
DatePickerFragment
undTimePickerFragments
sind statisch, so dass Sie keinen Zugriff auf Ihre Aktivität textviews. Wenn Sie nicht static, dann alles, was Sie tun müssen, isttimeTextView.setText(...)
innerhalb vononTimeSet(...)
Methode. (By the way, halten Sie den static ist gut, denn Sie können die Wiederverwendung in einer anderen Tätigkeit, wenn Sie müssen.)Eine Möglichkeit, dies zu umgehen, wäre eine zusätzliche Schnittstelle und übergeben, das picker-dialog-Fragmente, wenn Sie Sie erstellen und dann einen Rückruf. Aber warum tun, wenn OnDateSetListener und OnTimeSetListener Schnittstellen bereits vorhanden?
Werde ich beziehen sich nur auf die DatePickerFragment unten, aber allen das gleiche gilt für die TimePickerFragment als gut.
Ihre
MainActivity
umsetzen sollteOnDateSetListener
, nicht IhreDatePickerFragment
. Einer von den überschriebenen Methoden von OnDateSetListener istonDateSet(...)
wo Sie das Datum in die TextView. Zum Beispiel:Ihre
DatePickerFragment
sollte ein Konstruktor nimmt einenOnDateSetListener
als parameter und hält eine Referenz darauf. Finden Sie unter gewusst wie: implementieren Sie Ihre DatePickerFragment hier https://gist.github.com/2935353Nun in Ihrer
showDatePickerDialog(View v)
, pass deine MainActivity (das ist auch ein OnDateSetListener) wie folgt:Dann, wenn die Zeit eingestellt ist, deine MainActivity implementiert 'OnDateSetListener' erhalten einen Rückruf und deine textview wird aktualisiert.
Hoffe, das klärt die Dinge ein wenig.
P. S. Sie sollten außerdem die leeren Konstruktor in der
DatePickerFragment
es wird verhindern, dass Ihre app abstürzt, wenn das Gerät gedreht wird.InformationsquelleAutor codinguser
sollten Sie die write-Anweisung, um zu zeigen, Datum/Uhrzeit auf TextView. und
definieren Sie als Klassenvariable.
und
InformationsquelleAutor Jignesh Ansodariya