小编Chr*_*ina的帖子

屏幕旋转后保留监听器 - 使用DatePicker的DialogFragment

单击我的(Scherlock)FragmentActivity中的EditText字段时,将显示DatePicker.选择日期并单击"应用"后,将使用日期填充Edittext字段.这可以正常工作,直到我在DatePicker可见时旋转屏幕.它的onCreateDialog方法再次启动,一切看起来都正确.但是,当我单击"应用"时,EditText字段中没有填写任何日期.

这很可能是因为我没有设法保留听众.这个问题与DialogFragment非常相似- 在屏幕旋转后保留监听器但是在我的代码中我有一个DialogFragment中包含的监听器接口,我无法通过调用FragmentActivity来达到监听器,(正如解决方案在上述问题中所建议的那样).

  • 我想不是,但有没有办法在活动被销毁之前保存一个监听器?(我对Manifest修改不感兴趣.)
  • 有没有办法修改这个DialogFragment,或者这个解决方案是否包含在这种情况下不适合的接口?

请帮助我,这真的不应该那么难,但我一直在使用它的时间比我承认的还要长......

这是DialogFragment代码:

public class DateDialogFragment extends SherlockDialogFragment {    

public static String TAG = "DateDialogFragment";
static Context mContext; 
static int mYear;
static int mMonth;
static int mDay;
static DateDialogFragmentListener mListener;


public static DateDialogFragment newInstance(Context context, DateDialogFragmentListener listener, Calendar now) {
    DateDialogFragment dialog = new DateDialogFragment();
    mContext = context;
    mListener = listener;       
    mYear = now.get(Calendar.YEAR);
    mMonth = now.get(Calendar.MONTH);
    mDay = now.get(Calendar.DAY_OF_MONTH);      
    return dialog;
}


public Dialog onCreateDialog(Bundle savedInstanceState) {
    return new DatePickerDialog(mContext, mDateSetListener, …
Run Code Online (Sandbox Code Playgroud)

android listener orientation-changes android-dialogfragment dialogfragment

4
推荐指数
1
解决办法
5555
查看次数