2012-10-29 14 views
16

Więc próbuję włączyć datepicker dla wersji android mieszkowy 11. że używam biblioteki v4 wsparcie. Importować wszystkie rzeczy konieczne:Metoda „getSupportFragmentManager()” jest unsuported

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; 

I stworzyłem klasę:

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); 
} 
} 

Więc klasa skompilować ok. Ale problem jest, gdy próbuję go użyć. Mam metodę onclick dla EditText który wygląda tak:

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

jednak w ostatnim wierszu pojawia się błąd:

The method getSupportFragmentManager() is undefined for the type MainActivity 

pomysłów jak rozwiązać to? btw nie mam importowane coś podobnego

android.app.Fragment; 

Tak, że nie jest to przypadek tutaj: S

+0

Trzeba rzeczywiście przyjąć odpowiedź dla innych wskazujących, że jest to rozwiązanie problemu –

+0

Więc ja, na szczęście mam przeszedł które teraz: D – gabrjan

Odpowiedz

63

Domyślam się, że MainActivity nie rozszerza FragmentActivity! W pakiecie SupportPackage działanie musi być dziedziczone z FragmentActivity, aby uzyskać metody takie jak getSupportedFragmentManager().

EDIT:

Ponieważ aktywność dziedziczy z innej klasy, można spróbować wdrożyć Zachowanie jednej z tych klas i rodzaju połączyć je. Czyli tutaj znajdziesz kod FragmentActivity: FragmentActivity Source

+0

wow to prawda, ale Jestem działalnością rozszerzającą SherlockMapActivity, a ponieważ java pozwala tylko rozszerzyć jedną aktywność, nie mam pojęcia, jak to naprawić: S – gabrjan

+3

@gabrjan: Nie możesz łatwo korzystać z fragmentów pakietu Pomocy technicznej za pomocą dodatku SDK do Map Google. Stąd, AFAIK, 'SherlockMapActivity' działa tylko na poziomie API 11+ i dziedziczy po' MapActivity', więc należałoby użyć 'getFragmentManager()', 'nie getSupportFragmentManager()'. – CommonsWare

+0

dobrze, że to nieprawda sherlockmapActivity działa dobrze na poziomie 8 api ... odkąd spróbowałem i to właśnie działa OK. – gabrjan

Powiązane problemy