web-dev-qa-db-ja.com

メソッド 'getSupportFragmentManager()'はサポートされていません

だから私はAndroid 11以下のバージョンのdatepickerを有効にしようとしています。そのためにサポートライブラリv4を使用しています。必要なものをすべてインポートします:

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

したがって、クラスは正常にコンパイルされます。しかし、問題は私がそれを使おうとするときです。私はそのように見える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

17
gabrjan

私の推測では、MainActivityFragmentActivityを拡張していません! SupportPackageでは、アクティビティはFragmentActivityから継承してgetSupportedFragmentManager()などのメソッドを取得する必要があります。

編集:

アクティビティは別のクラスから継承しているため、これらのクラスのいずれかの動作を実装して、それらをマージすることができます。つまり、ここにFragmentActivityのコードがあります: FragmentActivity Source

65
Rafael T