无法将活动强制转换为android.app.DatePickerDialog$OnDateSetListener

无法将活动强制转换为android.app.DatePickerDialog$OnDateSetListener,android,android-fragments,Android,Android Fragments,无法将实现OnDateChangedListener的活动的上下文()强制转换为OnDateSetListener活动是另一个类。但这里的问题是,您无法将OnDateChangedListener强制转换到接口OnDateSetListener 相反,尝试 public class DatePickerDialogFragment extends DialogFragment { private Context context; public DatePickerDialogF

无法将实现OnDateChangedListener的活动的上下文(
)强制转换为OnDateSetListener

活动
是另一个类。但这里的问题是,您无法将
OnDateChangedListener
强制转换到接口
OnDateSetListener

相反,尝试

public class DatePickerDialogFragment extends DialogFragment {
    private Context context;

    public DatePickerDialogFragment(Context context) {
        this.context = context;
    }

    public Dialog onCreateDialog(Bundle savedInstanceState) {
        final Calendar c = Calendar.getInstance();
        return new DatePickerDialog(context, (OnDateSetListener) context,
                c.get(Calendar.YEAR), c.get(Calendar.MONTH),
                c.get(Calendar.DAY_OF_MONTH));
    }
}

    public class mActivity extends SherlockFragmentActivity implements
            OnDateSetListener {
        dateField.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            android.support.v4.app.FragmentManager fm = getSupportFragmentManager();
            DialogFragment newFragment = new DatePickerDialogFragment(mActivity.this);
            newFragment.show(fm, "date_frag");
        }
    });
    }

只要试试它的工作代码

new OnDateSetListener(){
    //do something here. 
};
public static class DatePickerFragment extends DialogFragment implements
            DatePickerDialog.OnDateSetListener {
    private int year, month, day;
    private Button btn;

    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {

        this.year = year;
        this.month = monthOfYear;
        this.day = dayOfMonth;

    }

    public void setObject(Button v) {
        this.btn = v;
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

        // Use the current date as the default date in the picker
        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);

        // Create a new instance of DatePickerDialog and return it
        return new DatePickerDialog(getActivity(), this, year, month, day);
    }
}

public class SubmitPost extends SherlockFragmentActivity {
dateField.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            DatePickerFragment newFragment = new DatePickerFragment();
            newFragment.setObject(v);
            newFragment.show(getSupportFragmentManager(), "datePicker");        }
    });
}