2012-10-29 12 views
16

Quindi sto provando ad abilitare datepicker per le versioni di Android muggenti 11. per quello sto usando la libreria di supporto v4. Importare tutta la cosa necessaria:Il metodo 'getSupportFragmentManager()' non è disturbato

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; 

e ho creato una 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); 
} 
} 

Così classe compilare ok. Ma il problema è quando cerco di usarlo. Ho un metodo onclick per EditText che assomiglia a quello:

public void showDatePicker(View v) { 
    DialogFragment selectDate = (DialogFragment) new DatePicker(); 
    EditText edit=(EditText)v; 
    ((DatePicker) selectDate).setTextField(edit); 
    selectDate.show(getSupportFragmentManager(), "datePicker"); 
} 

ma in ultima riga ottengo l'errore:

The method getSupportFragmentManager() is undefined for the type MainActivity 

Delle idee come risolvere questo? btw non ho importato nulla di simile

android.app.Fragment; 

In modo che non è il caso qui: S

+0

si dovrebbe effettivamente accettare la risposta per gli altri che indicano che si tratta di un problema risolto –

+0

così ho fatto, per fortuna sto passato che ormai: D – gabrjan

risposta

63

La mia ipotesi è che il vostro MainActivity non sta estendendo FragmentActivity! Nel SupportPackage un'attività deve ereditare da FragmentActivity per ottenere metodi come getSupportedFragmentManager().

EDIT:

Dal momento che l'Activity eredita da un'altra classe, si può provare a implementare il comportamento di una di queste classi e tipo di unirli. Cioè qui troverete il codice per FragmentActivity: FragmentActivity Source

+0

wow che è vero, ma sto lavorando sta estendendo SherlockMapActivity, e dal momento che java abilita solo per estendere un'attività non ho idea di come correggerlo: S – gabrjan

+3

@gabrjan: Non puoi usare prontamente i frammenti del pacchetto di supporto Android con l'add-on di Maps SDK. Quindi, AFAIK, 'SherlockMapActivity' funziona solo su API di livello 11+ ed eredita da' MapActivity', quindi useresti 'getFragmentManager()', non 'getSupportFragmentManager()'. – CommonsWare

+0

beh questo non è vero, sherlockmapActivity funziona bene su api livello 8 ... da quando l'ho provato e funziona perfettamente. – gabrjan

Problemi correlati