2012-10-29 6 views
16

Also ich versuche, Datepicker für Android-Versionen unten 11 zu aktivieren. Dafür verwende ich Support-Bibliothek v4. Ich importiere das alles, was notwendig:Die Methode 'getSupportFragmentManager()' ist unsuportiert

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; 

Und ich erstellt eine Klasse:

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

So Klasse kompiliert ok. Aber das Problem ist, wenn ich versuche, es zu benutzen. Ich habe eine Methode OnClick für EditText, die so aussieht:

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

aber in letzter Zeile bekomme ich den Fehler:

The method getSupportFragmentManager() is undefined for the type MainActivity 

Irgendwelche Ideen, wie das lösen? btw ich habe nicht importiert etwas wie

android.app.Fragment; 

So ist das hier nicht der Fall: S

+0

Sie sollten die Antwort für die anderen, dass diese Angabe tatsächlich akzeptieren ist ein gelöstes Problem –

+0

So habe ich, zum Glück kam ich bin, dass jetzt: D – gabrjan

Antwort

63

Meine Vermutung ist, dass Ihr MainActivity nicht FragmentActivity erweitert! Im SupportPackage muss eine Aktivität von FragmentActivity erben, um Methoden wie getSupportedFragmentManager() zu erhalten.

EDIT:

Da Ihre Aktivität von einer anderen Klasse erbt, können Sie versuchen, das Verhalten von einem dieser Klassen zu implementieren und Art, sie zu verschmelzen. Dh hier finden Sie den Code für FragmentActivity finden: FragmentActivity Source

+0

wow, das ist wahr, aber Ich bin Aktivität erweitert SherlockMapActivity, und da Java nur eine Aktivität zu verlängern, habe ich keine Idee, wie das zu beheben: S – gabrjan

+3

@gabrjan: Sie können nicht einfach die Fragmente des Android Support Package mit dem Google Maps SDK-Add-on verwenden. AFAIK, 'SherlockMapActivity' arbeitet daher nur auf API Level 11+ und erbt von' MapActivity', also würde man 'getFragmentManager()', nicht 'getSupportFragmentManager()' verwenden. – CommonsWare

+0

Nun, das ist nicht wahr sherlockmapAktivität funktioniert gut auf API-Ebene 8 ... seit ich es ausprobiert habe und es funktioniert nur ok. – gabrjan

Verwandte Themen