2012-10-29 30 views
16

所以我试图启用datepicker android版本波纹管11.为此,我正在使用支持库v4。我导入所有必要的东西:'getSupportFragmentManager()'方法未被导入

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; 

我开了一类:

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

因此类编译OK。但问题是,当我尝试使用它。我有EditText上一个onclick方法,看起来像:

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

然而,在最后一行我得到的错误:

The method getSupportFragmentManager() is undefined for the type MainActivity 

任何想法如何解决?像

android.app.Fragment; 

顺便说一句,我没有任何进口所以这不是这里的情况:S

+0

你实际上应该接受别人表明这个答案是解决问题 –

+0

所以我做了,幸运的是,我通过了,现在:d – gabrjan

回答

63

我的猜测是,你MainActivity不延长FragmentActivity!在SupportPackage中,活动必须从FragmentActivity继承以获取像getSupportedFragmentManager()这样的方法。

编辑:

由于您的活动是从另一个类继承,你可以尝试实现这些类之一的行为和种类的合并。即在这里你会发现FragmentActivity代码: FragmentActivity Source

+0

哇,这是真的,但我的活动正在扩展SherlockMapActivity,并且由于java只支持扩展一项活动,所以我不知道如何解决这个问题:S – gabrjan

+3

@gabrjan:您无法随时使用Android支持包的片段与Maps SDK附加组件。因此,AFAIK,'SherlockMapActivity'只能在API Level 11+上工作,并从'MapActivity'继承,所以你可以使用'getFragmentManager()'而不是'getSupportFragmentManager()'。 – CommonsWare

+0

好吧,这不是真的sherlockmapActivity在api level 8上工作得很好......因为我试过了,而且它工作正常。 – gabrjan

相关问题