Android - Selezione data
Il selettore data di Android consente di selezionare la data composta da giorno, mese e anno nell'interfaccia utente personalizzata. Per questa funzionalità, Android fornisce i componenti DatePicker e DatePickerDialog.
In questo tutorial, dimostreremo l'uso di Date Picker tramite DatePickerDialog. DatePickerDialog è una semplice finestra di dialogo contenente DatePicker.
Per mostrare DatePickerDialog, devi passare l'id DatePickerDialog al metodo showDialog (id_of_dialog) . La sua sintassi è data di seguito:
showDialog(999);
Quando si chiama questo metodo showDialog , viene chiamato automaticamente un altro metodo chiamato onCreateDialog . Quindi dobbiamo ignorare anche questo metodo. La sua sintassi è data di seguito:
@Override
protected Dialog onCreateDialog(int id) {
// TODO Auto-generated method stub
if (id == 999) {
return new DatePickerDialog(this, myDateListener, year, month, day);
}
return null;
}
Nell'ultimo passaggio, devi registrare il listener DatePickerDialog e sovrascrivere il suo metodo onDateSet. Questo metodo onDateSet contiene il giorno, il mese e l'anno aggiornati. La sua sintassi è data di seguito:
private DatePickerDialog.OnDateSetListener myDateListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) {
// arg1 = year
// arg2 = month
// arg3 = day
}
};
Oltre agli attributi della data del modulo, a questa funzione viene passato anche l'oggetto DatePicker. È possibile utilizzare i seguenti metodi del DatePicker per eseguire ulteriori operazioni.
Suor n | Metodo e descrizione |
---|---|
1 | getDayOfMonth() Questo metodo ottiene il giorno del mese selezionato |
2 |
getMonth() Questo metodo ottiene il mese selezionato |
3 | getYear() Questo metodo ottiene l'anno selezionato |
4 |
setMaxDate(long maxDate) Questo metodo imposta la data massima supportata da questo DatePicker in millisecondi dal 1 gennaio 1970 00:00:00 nel fuso orario getDefault () |
5 |
setMinDate(long minDate) Questo metodo imposta la data minima supportata da questo NumberPicker in millisecondi dal 1 gennaio 1970 00:00:00 nel fuso orario getDefault () |
6 |
setSpinnersShown(boolean shown) Questo metodo stabilisce se gli spinner vengono visualizzati |
7 |
updateDate(int year, int month, int dayOfMonth) Questo metodo aggiorna la data corrente |
8 |
getCalendarView() Questo metodo restituisce la visualizzazione del calendario |
9 |
getFirstDayOfWeek() Questo metodo restituisce il primo giorno della settimana |
Esempio
Ecco un esempio che dimostra l'uso della classe DatePickerDialog. Crea un'applicazione di selezione data di base che consente di impostare la data utilizzando il widget DatePicker
Per sperimentare questo esempio, puoi eseguirlo su un dispositivo reale o in un emulatore.
Passi | Descrizione |
---|---|
1 | Utilizzerai Android Studio per creare un'applicazione Android e chiamarla DatePicker in un pacchetto com.example.datepicker. |
2 | Modifica il file src / MainActivity.java per aggiungere il codice necessario. |
3 | Modifica res / layout / activity_main per aggiungere i rispettivi componenti XML. |
4 | Modificare res / values / string.xml per aggiungere i componenti stringa necessari. |
5 | Esegui l'applicazione e scegli un dispositivo Android in esecuzione, installa l'applicazione su di esso e verifica i risultati. |
Di seguito è riportato il contenuto del file di attività principale modificato src/com.example.datepicker/MainActivity.java.
package com.example.datepicker;
import java.util.Calendar;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private DatePicker datePicker;
private Calendar calendar;
private TextView dateView;
private int year, month, day;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dateView = (TextView) findViewById(R.id.textView3);
calendar = Calendar.getInstance();
year = calendar.get(Calendar.YEAR);
month = calendar.get(Calendar.MONTH);
day = calendar.get(Calendar.DAY_OF_MONTH);
showDate(year, month+1, day);
}
@SuppressWarnings("deprecation")
public void setDate(View view) {
showDialog(999);
Toast.makeText(getApplicationContext(), "ca",
Toast.LENGTH_SHORT)
.show();
}
@Override
protected Dialog onCreateDialog(int id) {
// TODO Auto-generated method stub
if (id == 999) {
return new DatePickerDialog(this,
myDateListener, year, month, day);
}
return null;
}
private DatePickerDialog.OnDateSetListener myDateListener = new
DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker arg0,
int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
// arg1 = year
// arg2 = month
// arg3 = day
showDate(arg1, arg2+1, arg3);
}
};
private void showDate(int year, int month, int day) {
dateView.setText(new StringBuilder().append(day).append("/")
.append(month).append("/").append(year));
}
}
Di seguito è riportato il contenuto modificato del file xml res/layout/activity_main.xml.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="70dp"
android:onClick="setDate"
android:text="@string/date_button_set" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="24dp"
android:text="@string/date_label_set"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/button1"
android:layout_marginTop="66dp"
android:layout_toLeftOf="@+id/button1"
android:text="@string/date_view_set"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/button1"
android:layout_below="@+id/textView2"
android:layout_marginTop="72dp"
android:text="@string/date_selected"
android:textAppearance="?android:attr/textAppearanceMedium" />
</RelativeLayout>
Di seguito è riportato il contenuto del file res/values/string.xml.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">DatePicker</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>
<string name="date_label_set">Press the button to set the date</string>
<string name="date_button_set">Set Date</string>
<string name="date_view_set">The Date is: </string>
<string name="date_selected"></string>
</resources>
Proviamo a eseguire la nostra applicazione DatePicker che abbiamo appena modificato. Presumo che tu abbia creato il tuoAVDdurante l'impostazione dell'ambiente. Per eseguire l'app da Eclipse, apri uno dei file di attività del tuo progetto e fai clic sull'icona Esegui dalla barra degli strumenti. Eclipse installa l'app sul tuo AVD e la avvia e se tutto va bene con la configurazione e l'applicazione, verrà visualizzata la seguente finestra dell'emulatore:
Ora puoi vedere che la data è già stata impostata nell'etichetta in basso. Ora cambieremo la data tramite DatePickerDialog premendo il pulsante Imposta data. Premendo il pulsante apparirà la seguente schermata.
Ora imposta la data richiesta e, dopo aver impostato la data, premi il pulsante Fine. Questa finestra di dialogo scomparirà e la data appena impostata inizierà a essere visualizzata sullo schermo. Questo è mostrato di seguito.