J'essaie donc d'activer datepicker pour Android versions ci-dessous 11. pour cela, j'utilise la bibliothèque de support v4. J'importe tout ce qui est nécessaire:
import Android.support.v4.app.*;
import Android.support.v4.app.FragmentManager;
import Android.support.v4.app.Fragment;
import Android.support.v4.app.FragmentActivity;
import Android.support.v4.app.FragmentTransaction;
import Android.support.v4.app.DialogFragment;
Et j'ai créé une classe:
import Java.text.SimpleDateFormat;
import Java.util.Calendar;
import Java.util.Date;
import Android.app.DatePickerDialog;
import Android.app.Dialog;
import Android.os.Bundle;
import Android.support.v4.app.DialogFragment;
import Android.widget.EditText;
public class DatePicker extends DialogFragment implements DatePickerDialog.OnDateSetListener {
public EditText textField;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
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);
return new DatePickerDialog(getActivity(), this, year, month, day);
}
public EditText getTextField() {
return textField;
}
public void setTextField(EditText textField) {
this.textField = textField;
}
public void onDateSet(DatePicker view, int year, int month, int day) {
textField.setText(day+"."+(month+1)+"."+year);
}
@Override
public void onDateSet(Android.widget.DatePicker arg0, int arg1, int arg2,int arg3) {
textField.setText(arg3+"."+(arg2+1)+"."+arg1);
}
}
Donc, la classe se compile bien. Mais le problème, c'est quand j'essaie de l'utiliser. J'ai une méthode onclick pour edittext qui ressemble à ça:
public void showDatePicker(View v) {
DialogFragment selectDate = (DialogFragment) new DatePicker();
EditText edit=(EditText)v;
((DatePicker) selectDate).setTextField(edit);
selectDate.show(getSupportFragmentManager(), "datePicker");
}
mais à la dernière ligne, j'obtiens l'erreur:
The method getSupportFragmentManager() is undefined for the type MainActivity
Des idées pour résoudre ce problème? btw je n'ai rien importé comme
Android.app.Fragment;
Ce n'est donc pas le cas ici: S
Je suppose que votre MainActivity
ne s'étend pas FragmentActivity
! Dans le SupportPackage, une activité doit hériter de FragmentActivity pour obtenir des méthodes telles que getSupportedFragmentManager()
.
ÉDITER:
Étant donné que votre activité hérite d'une autre classe, vous pouvez essayer d'implémenter le comportement de l'une de ces classes et de les fusionner. C'est-à-dire que vous trouverez ici le code de FragmentActivity: FragmentActivity Source