web-dev-qa-db-fra.com

La méthode «getSupportFragmentManager ()» n'est pas prise en charge

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

17
gabrjan

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

65
Rafael T